{"_id":"@cognite/3d-viewer","_rev":"572-9ab1a56f7877f7081eafbe48eb18173e","name":"@cognite/3d-viewer","dist-tags":{"next":"3.0.0-rc5","beta":"6.1.1-beta.0","experimental":"6.1.3-fix-undefined-tree-index","latest":"6.1.5"},"versions":{"1.2.8":{"name":"@cognite/3d-viewer","version":"1.2.8","license":"UNLICENSED","_id":"@cognite/3d-viewer@1.2.8","maintainers":[{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"dist":{"shasum":"a98fe0f094a781ca1876c5af365f0fd1e1d7490c","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-1.2.8.tgz","fileCount":5,"integrity":"sha512-Qxoi/ehuj8yAWbWPU11l/FMc4u6CyJA1HGue4GQk1tqEA4+P5B+8hMIyxbIOkdpfx5B3yjnEnNvSi8GQnWPEAg==","signatures":[{"sig":"MEQCIFLtWi6cEh8VGk1QFxRb00WsMsaDBygJNkf4qQ6GMRq2AiBtBPlkO1JfPUUUfJOuHGtA2+j34RRDoulbO7S3zTaQww==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1855936,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbB/CKCRA9TVsSAnZWagAAro4P/0ylNWA6EMfo3nY/9Eit\nyuKE+nnxQ8ZT3ZxpJ5gctKdtj0WCJUWL/rkgPsILvHC5t+Apx/xsMDIS7PGv\nQ0ryElmAone3obruZoO0xpLIDs6gOSYJp83fZG4SNpBw1IgRhC8k+xjGR8pT\nvspHUUrrDbm3rs7AmxKKzDX1El1IoU596T4SDwznjrKPREjfVLAPw3LIzruH\nsZ1Pn6JKYAYY5ImPjZuxBCfMRetU1WR6kfvouQnlalII4Pslp4Gg0K4FskxO\nVWbE1/Ih6cEvhc70SXakycshd6dEyvGWROLPCSsPQrCoQ4X6aTCqSoxyp2NM\nOhga5jNNOzOjdhDYo9hFPSuzj9/fKfsYn/N2jDxKKn8JoQSAlwzGjU2YMXlR\nC8N6p/bs6rDGOG2jZFe40oRog4suZfv0uemmM2/4OcPvT/pKMAAOwozcTcQ2\nLvx67Q4ONH0KYr5NCPd85eb2OxO+01JUyCeVp5z5Ed0C0WU0P9wn3XETt47m\nFxHdyu06v8kSQp2MaIRbYxWfy9RHXk+pKQbmkY8Pexia5UhkAI7WnkBVSuJW\nBxUt8O2D3WuF/lwcrc9GQrheiLhmM1M3cvDj8bUw1rZ8cLrp/F37ddOLIf98\nTeKPXIRP8D9wyN0rTJHzkju04gGeRiBTMnWMx66xhI+VZPWQAcBNpL04w+8s\nL5M3\r\n=4wLf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"dev":"node build/dev-server.js","lint":"eslint src test","test":"NODE_ENV=test mocha --require babel-core/register --recursive","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"esdoc","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf lib/ && npm run build"},"_npmUser":{"name":"frxstrem","email":"frx.apps@gmail.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"https://github.com/cognitedata/3d-viewer.git","type":"git"},"browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"This is the repository for the Cognite 3D Viewer. Currently this will also contain the documentation for the Cognite3DViewer.","directories":{},"dependencies":{"opn":"^5.1.0","ora":"^1.3.0","pako":"^1.0.6","spdy":"^3.4.7","chalk":"^2.3.0","esdoc":"^1.1.0","mocha":"^4.1.0","three":"^0.90.0","global":"^4.3.2","semver":"^5.4.1","express":"^4.16.2","shelljs":"^0.7.8","webpack":"^3.8.1","prettier":"^1.11.1","protobufjs":"^6.8.6","raw-loader":"^0.5.1","url-loader":"^1.0.1","file-loader":"^0.11.2","stream-http":"^2.7.2","query-string":"^5.0.1","route-parser":"0.0.5","whatwg-fetch":"^2.0.4","webpack-merge":"^4.1.1","worker-loader":"^1.1.1","express-static-gzip":"^0.3.2","html-webpack-plugin":"^2.30.1","three-instanced-mesh":"^85.3.3","three-orbit-controls":"^82.1.0","esdoc-standard-plugin":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.0","friendly-errors-webpack-plugin":"^1.6.1","@cognite/threejs-fpv-controller":"^1.0.3","esdoc-ecmascript-proposal-plugin":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^4.18.2","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_1.2.8_1527246985169_0.7805086986008654","host":"s3://npm-registry-packages"}},"1.2.9":{"name":"@cognite/3d-viewer","version":"1.2.9","license":"UNLICENSED","_id":"@cognite/3d-viewer@1.2.9","maintainers":[{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"seamuffin","email":"seamuffin@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"dist":{"shasum":"aff6cc255899de3620a3c8100c3ef5e9b7336296","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-1.2.9.tgz","fileCount":5,"integrity":"sha512-6pimEOvdDFAIkCfro9s96Atnafy8Wb/vEtZJ+GREXGAwNKDJSUF3Y1k8Egn4PITiTvRZCUibmwehyGZ0fEKh5g==","signatures":[{"sig":"MEYCIQDAOri5jLnpcKy680UPRSKuwPOSwwS5UtO/IQvNjzPwpQIhAKULGQvUjHutmKVW7GaObPix3eoTUAo5I1kiT2JkIJ6X","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1855805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFRHDCRA9TVsSAnZWagAA+PsP+QEmO1RAMbTL95vRBchj\nSv3NwVnbV1GGWYXXhT4Y3+ToQrFTzrsQqCHsXq996ZYJkp6BvmYtJxs7TUC9\nMAlQ8pImzjBJwlfEssexyjRJOuisIFYVKNPDwTZrfPKYgJm+ZtKPo/u5Ybvy\n+E9TB/30AEOEk3/u46eQ7F/uez0BX9K9slrTdNoasgmkssKG/TzytV6/RPnp\nZWdCj19zuVXNVRnFbVt5lG0ngIrQl3OesbSg3N4AeVTVvBHYspQlAo81eBux\n8j48f0CDUVtMhkaCWcibRnQu3m2LNif1VcLXIsTILG5/GDa4dkQo+Yxvpdh6\nqWZ929DZJkYsZyxKfEeIrezjvOB5qGSa3G2kRN9/erfeSiBkFVHbNb7LahgL\nl57Xgol9rbgUMTj2BGs7WlTcff4JgUc7iE7+jmf8j5ANIyfJcgXpHfcyOXGZ\n3NUBKolhVtzFCjz2TSAd6Z8czZAQQ4MRuoewihuYDuuAcSKFYeYKT9WVGmFh\nwRchVNHNMW51wdmujuhTjbY26vaO2AB+HJPcoyS6KGnaaHRCUaRQltxwEUTE\nFjRriI5gV6l1an9JDyUYAL6d351/YTPgrAugZUGDuXC3/83rSu8jDGMqFHg6\nMfJQZ6gtNMaq9AxMC3EFqXp4g3M/3EqP6bTQw6mzhKztqs6/pxJyz8iDRPQA\nroad\r\n=3PFw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"dev":"node build/dev-server.js","lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"esdoc","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"https://github.com/cognitedata/3d-viewer.git","type":"git"},"browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"This is the repository for the Cognite 3D Viewer. Currently this will also contain the documentation for the Cognite3DViewer.","directories":{},"dependencies":{"opn":"^5.1.0","ora":"^1.3.0","pako":"^1.0.6","spdy":"^3.4.7","chalk":"^2.3.0","esdoc":"^1.1.0","mocha":"^4.1.0","three":"^0.90.0","global":"^4.3.2","semver":"^5.4.1","express":"^4.16.2","shelljs":"^0.7.8","webpack":"^3.8.1","prettier":"^1.11.1","protobufjs":"^6.8.6","raw-loader":"^0.5.1","url-loader":"^1.0.1","file-loader":"^0.11.2","stream-http":"^2.7.2","query-string":"^5.0.1","route-parser":"0.0.5","whatwg-fetch":"^2.0.4","webpack-merge":"^4.1.1","worker-loader":"^1.1.1","express-static-gzip":"^0.3.2","html-webpack-plugin":"^2.30.1","three-instanced-mesh":"^85.3.3","three-orbit-controls":"^82.1.0","esdoc-standard-plugin":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.0","friendly-errors-webpack-plugin":"^1.6.1","@cognite/threejs-fpv-controller":"^1.0.4","esdoc-ecmascript-proposal-plugin":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^4.18.2","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_1.2.9_1528107457898_0.5681289614981353","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@cognite/3d-viewer","version":"1.3.0","license":"UNLICENSED","_id":"@cognite/3d-viewer@1.3.0","maintainers":[{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"seamuffin","email":"seamuffin@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"1da28eb51d5e1358ce526906a3c0e30d4081d461","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-1.3.0.tgz","fileCount":3,"integrity":"sha512-IsX4n1cFxvixO4t0La1nkjFuGWtnXQzJKlBz/NL2DcNcBA8VhBFh9f2b+FT0rbdw5f4/5w8Dxrk3l2ilmYtETg==","signatures":[{"sig":"MEUCIExEkjhc06ThsrY4EciLIGEFlq7fTxCrXZFzBCuEQ/6UAiEAl1Hi+UnmKKX48TZg0LYzSNCHpJfTd3CQeLofBP1Jt7s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1856761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFS7qCRA9TVsSAnZWagAA23kP/ixr0JGX8AGAzneq/Os3\nQNPnJHyWP4G2WN2150s1VaRE8y2ppVXFSxkM+8869VKpk14QaPD7rebzPpxs\nk/B1bhdpIjO92SQEJCOEVLQ78wL0T1TDJeoNTi2WfTuoRb7kYrnIF1cKBGYV\n5pbMB73lFlNSFcSScbyUtH9PZndCfjbjGg9sx5A3adhZWf8LYGYj6qo/ikxX\np4SLFeq/J8Y3SfuLC/BuwmAb+pNbswJGkPDBL6QgeJQQqBZDL3KG+WGWGgRh\nOqeF9s9gJIHH+IU+TdRqQZ6GLfdLvIiZR6TtUAyRl5XQlcjf7WlXjQ6IUE1F\nqUq74RA0Y2kSU0mn/9mzZO3D0iUi2YhSOfzIsPN1Hc1hPuXNSGzjwZ7ckyBH\nXn4X3qqzD8j6FGrzIOjFI9bIgj02hzrr0+K1bzZ2IUa1lsmrnPwW+WNmbE9X\n9/uxOmqTtj0nNJN9xL7fQx3gPyIAaEyHvdg146CRuRMu0REk0WGdPZ8NufLl\nyS2UMaqouOzGqC2ndvZwGRfS3N92y8xKdn7q/M1nEIxixBB0ZpoJ0RMm+AzG\nuvhmuAZ0BZYztUoNKOjNwk6G2UbQVJQbrCk5yDrvzkAezF+9UZmc1YvZL0aV\n7GVfk3iBuShwNMQWhMZ0YLdgUEgKMShyfUpAtvaX7GVAszR/579f0CaDQE8v\ntFZE\r\n=sNFA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"a8038bdf0f1070b339bf33912b1caa1228bacbed","scripts":{"dev":"node build/dev-server.js","lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"esdoc","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"frxstrem","email":"frx.apps@gmail.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.6.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"This is the repository for the Cognite 3D Viewer. Currently this will also contain the documentation for the Cognite3DViewer.","directories":{},"_nodeVersion":"10.0.0","dependencies":{"opn":"^5.1.0","ora":"^1.3.0","pako":"^1.0.6","spdy":"^3.4.7","chalk":"^2.3.0","esdoc":"^1.1.0","mocha":"^4.1.0","three":"^0.90.0","global":"^4.3.2","semver":"^5.4.1","express":"^4.16.2","shelljs":"^0.7.8","webpack":"^3.8.1","prettier":"^1.11.1","protobufjs":"^6.8.6","raw-loader":"^0.5.1","url-loader":"^1.0.1","file-loader":"^0.11.2","stream-http":"^2.7.2","query-string":"^5.0.1","route-parser":"0.0.5","whatwg-fetch":"^2.0.4","webpack-merge":"^4.1.1","worker-loader":"^1.1.1","express-static-gzip":"^0.3.2","html-webpack-plugin":"^2.30.1","three-instanced-mesh":"^85.3.3","three-orbit-controls":"^82.1.0","esdoc-standard-plugin":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.0","friendly-errors-webpack-plugin":"^1.6.1","@cognite/threejs-fpv-controller":"^1.0.4","esdoc-ecmascript-proposal-plugin":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^4.18.2","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_1.3.0_1528114921907_0.1049182375595592","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@cognite/3d-viewer","version":"2.0.0","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.0.0","maintainers":[{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"seamuffin","email":"seamuffin@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"0f3abff5ac48588f5613a374016cd31d1ebeca7d","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.0.0.tgz","fileCount":3,"integrity":"sha512-c41hzMUsCn66N6Po4kDY8PzZuaDWSVhebsxZuzeLKjZ93qVVNhLLTYepi3dB4e+rca1q4fVYv2mrCdXfKwyKfQ==","signatures":[{"sig":"MEUCIDxU8xPDC4205p4ImihtlYrHLmysV8YE/ipdawAVeh90AiEA/PhTuWkjDkZfnoKob51HBxV8gHUVaYVQ4AcN2OkZ9nk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1635423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHoPcCRA9TVsSAnZWagAAWIIP/1JXSl7srmunWnB4+YQj\nxX7ZM1redHXINfqmLaoV4OBCXxF1pzlkeksgMAiVzchycDG9EYFV3Q8pBfXx\nc4PERX3JDYcc0H9wfIavodkaoV5/B7m+2LEGTR2qoOP1/RE3ZadoKxJi6bO/\n8aqRjD9ujUumzXT1KASbQylzOBAnIWfeJo+BL7TfoWYVFhmIZwVZRrubRSLO\nBaBTJRAuetKgdk3hZYQw1CzciSOpkDIwrJeQcOK9O1k3sh65E9U0Ac2lzn84\nAH8xQdAbKdG5/nTRzxq7JoXGwqXFAWvunaXtjAcz4rJb7yV1i5CK++c0Exxq\nL5QJK4An3AUXxip/G2Ta4HyTzit+HPE1YBfKbM6TMxeJg+lDXm1WsdUXnvuG\nJzRde9rqOu1yXX8EXzWskWh0iP91Gr5kaQk7vrIDpvHZ8g/8RQhyQJMrwVzh\ng2ne3g3rqccToiGCgSAcKm6PZkZTIq9wEaJneL/Ru9+IbPtVmWa2svzg7BDY\nNYLLUCnsJgdqv3WtXSm51n9ZPGugU/6yhX44UKkFRyuipkeRX9dHkG5oTytv\nvOaukLNJ68wrWaoBDh+awReRWSm/vMUjIJ//ymjifOiVEcwUfqXQbw84kV+m\np/Goo4QVRTG7adC+0uoW88C2LiT+2pxCWFpCkPlrwwPilxE6I7FL+MMyi/mP\nOsEC\r\n=trY3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"efa771e99c6f1bef2767ba9c4600c2f15afd7f33","scripts":{"dev":"node build/dev-server.js","lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"esdoc","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.4.2","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"This is the repository for the Cognite 3D Viewer. Currently this will also contain the documentation for the Cognite3DViewer.","directories":{},"_nodeVersion":"8.4.0","dependencies":{"opn":"^5.1.0","ora":"^1.3.0","pako":"^1.0.6","spdy":"^3.4.7","clamp":"^1.0.1","esdoc":"^1.1.0","mocha":"^4.1.0","three":"^0.90.0","global":"^4.3.2","semver":"^5.4.1","defined":"^1.0.0","shelljs":"^0.7.8","webpack":"^3.8.1","is-array":"^1.0.1","prettier":"^1.11.1","right-now":"^1.0.0","protobufjs":"^6.8.6","raw-loader":"^0.5.1","url-loader":"^1.0.1","fast-filter":"^1.0.4","file-loader":"^0.11.2","is-function":"^1.0.1","stream-http":"^2.7.2","query-string":"^5.0.1","route-parser":"0.0.5","whatwg-fetch":"^2.0.4","octree-helper":"^0.6.2","sleep-promise":"^6.0.0","sparse-octree":"^4.2.2","webpack-merge":"^4.1.1","worker-loader":"^1.1.1","postprocessing":"^4.5.0","@tweenjs/tween.js":"^17.2.0","html-webpack-plugin":"^2.30.1","three-instanced-mesh":"^85.3.3","esdoc-standard-plugin":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.0","@cognite/three-orbit-controls":"^82.1.1","friendly-errors-webpack-plugin":"^1.6.1","esdoc-ecmascript-proposal-plugin":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chalk":"^2.3.0","eslint":"^4.18.2","express":"^4.16.2","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.0.0_1528726491143_0.9491222698180493","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@cognite/3d-viewer","version":"2.0.1","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.0.1","maintainers":[{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"seamuffin","email":"seamuffin@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"46264f30698eeb5949f981d09b3ec92de6f31cce","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.0.1.tgz","fileCount":3,"integrity":"sha512-EBsEy5gJIeacDnPPNWlJLdB+tCsmr1m1p7WJNrlrQ2RkZq/498rMwT9187nEnBY6loOzmU/gcOXQGBiF4eiLhA==","signatures":[{"sig":"MEYCIQCZ2IitXodtYmichKLA1Q1JusG5AzEXqE3To4onPC09cQIhANjalezfsQy8ieFAH+1m1/MGdPDL8rVSBVVEME/M5J9b","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1636145,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHpx2CRA9TVsSAnZWagAAmaAP/Rhl/iBHs/XfNmld6ZfB\nLoCEheazAcl5QTMfeQQIv8cnPhRBZBIuHsZhssS3uGm2FXdUMJHXMOFjFONc\nM+OhexhqKj01K1kdahm+voCzD4MW5f54kC6k8Re6CL5eedR/c/9vdWICBuBa\nkWeo57rfslKJ0N0FgzZou79z/87cTngE+liESxnD55hMiYOMZDulKD92a0FG\nlQlzAd7zhU3m0iy+r8hZfy+XucGcR43XVegiJvrO7pJ+4No0wS/1y+HWE1Po\npp+k2OqRVURjU50BbvjJ4axS1QcV329MoVbv/jsNRAEiVaze8feSElKCR+wB\nDXR34n0lFp2jHCvxurUrHrZHPYOn12Etdiaii6ZIhvLpVRAy/e1ZaylnF4dz\nQDb8Bc+MOVPgoKjCOFwOhPl7hvnozenZmjZRD3ecpqv7ji4VUbR75+ey/RkI\nxyqKSYihVP0SeGRsed1fGTmCG6M6lx/3pKtxo+x7t60F11688vOFjSF8ndsl\nB8SdJGv6syMrdGqJkaAj84q2CsgMiE4VFI3beUi8FMOpJJxdIiYDch7+QKm0\nOTxnWzYspECU9ZupPQCAqp42dOIY2bhNS1dPJ4tXzWGydSpy3KKrp/tZMAF7\nJQQ+u3EvHOByjXBA3Gvl03hpTycJYYvHgfx6mPMtcBQgb5WuvIMYNwiG+R41\n6aiR\r\n=Wgyc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"5ac30c89ba73d68e8ebf623b201c8a18a22d535a","scripts":{"dev":"node build/dev-server.js","lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"esdoc","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.4.2","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"This is the repository for the Cognite 3D Viewer. Currently this will also contain the documentation for the Cognite3DViewer.","directories":{},"_nodeVersion":"8.4.0","dependencies":{"opn":"^5.1.0","ora":"^1.3.0","pako":"^1.0.6","spdy":"^3.4.7","clamp":"^1.0.1","esdoc":"^1.1.0","mocha":"^4.1.0","three":"^0.90.0","global":"^4.3.2","semver":"^5.4.1","defined":"^1.0.0","shelljs":"^0.7.8","webpack":"^3.8.1","is-array":"^1.0.1","prettier":"^1.11.1","right-now":"^1.0.0","protobufjs":"^6.8.6","raw-loader":"^0.5.1","url-loader":"^1.0.1","fast-filter":"^1.0.4","file-loader":"^0.11.2","is-function":"^1.0.1","stream-http":"^2.7.2","query-string":"^5.0.1","route-parser":"0.0.5","whatwg-fetch":"^2.0.4","octree-helper":"^0.6.2","sleep-promise":"^6.0.0","sparse-octree":"^4.2.2","webpack-merge":"^4.1.1","worker-loader":"^1.1.1","postprocessing":"^4.5.0","@tweenjs/tween.js":"^17.2.0","html-webpack-plugin":"^2.30.1","three-instanced-mesh":"^85.3.3","esdoc-standard-plugin":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.0","@cognite/three-orbit-controls":"^82.1.1","friendly-errors-webpack-plugin":"^1.6.1","esdoc-ecmascript-proposal-plugin":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chalk":"^2.3.0","eslint":"^4.18.2","express":"^4.16.2","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.0.1_1528732790434_0.5598397414488829","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"@cognite/3d-viewer","version":"2.0.2","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.0.2","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"seamuffin","email":"seamuffin@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"574ea938d6715c4794d7ca3b36b5602fb49ede62","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.0.2.tgz","fileCount":3,"integrity":"sha512-f26+ZBaorCeCVstQY/NCNykxrSJL6VoFld3VyCqfO1BG5KwcdylM8B6/qWCp3NpMzDlVof6TTipE62Qz0GfOTw==","signatures":[{"sig":"MEYCIQCyavpnuwWN0Ge6+5cHosxIO46z3Uqzb1X7F2gGlOc8NwIhAMyNLhftvZz50UCp4NAYckdKABt2biB2LYAlkd/Uh1Ro","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1637259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbH+RbCRA9TVsSAnZWagAAcEUQAJvgPhPBmsNyhCs6bz1Z\nDCMBDHC/b/tovBu/9GD5mlvaamDWaVEUgsVhzKzyIbw0F/9KGF+rADDDsA9N\nMgzU0BcjHOcvqltuNg1MG8X6zgUVNTWN1Mr0oc5G2lkOSFog8e46ow8ilGoH\nWpC/vnOGFWHaw526bbGmG4ax1HyuBfVucGQ75tMoKNQhQnE49RVeUUhSwCsk\nWOWVoWeIWf3/4/xlGyMoFdejaIL4yfI8msQNXrG5G0jjmZX00au8mCE1WCdU\n37/7uRauQQbsaiXReXAGDYqEFvPKG25ItK+Hv7OI+n8fvpT4OaVfGTQCevZB\nGx8l+2RiclEnddZ5P+tYN2Xmcdo/KkzlWQzUhJAXCA+VDFAvVP49ntrWhs79\nV/dAnxXikbi2k9FAKIt8iqeuDjTXDdSg9YMe+AVjbTAWYP1fm/7nsLVLARAI\nV6JMaSeiyk/+2ojVx1vuo5UhNTakGn44nH3YysU4hqvyMxNMIkCTUIAzCjEF\n6RpawfQVB6zq5XpNck/VDERec+I2/0REQdi6EnfldFdr0lqHrf8LsMozXnig\neZmbHuHjAZCqp6tVCwqxLCy2lQtNfcdqHQGNqKX7FlIH5mmokBvJ1cCAt/0x\nlfuvxzO5IlJEyG0ikEkt3EPKpNKTpC7YayJqMehNo0H1jI+vhBQMeZLd5omN\naHwC\r\n=J4Rn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"797f15360781505aa82b124332e65f1233040fa3","scripts":{"dev":"node build/dev-server.js","lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"esdoc","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"frxstrem","email":"frx.apps@gmail.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.6.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"This is the repository for the Cognite 3D Viewer. Currently this will also contain the documentation for the Cognite3DViewer.","directories":{},"_nodeVersion":"10.0.0","dependencies":{"opn":"^5.1.0","ora":"^1.3.0","pako":"^1.0.6","spdy":"^3.4.7","clamp":"^1.0.1","esdoc":"^1.1.0","mocha":"^4.1.0","three":"^0.90.0","global":"^4.3.2","semver":"^5.4.1","defined":"^1.0.0","shelljs":"^0.7.8","webpack":"^3.8.1","is-array":"^1.0.1","prettier":"^1.11.1","right-now":"^1.0.0","protobufjs":"^6.8.6","raw-loader":"^0.5.1","url-loader":"^1.0.1","fast-filter":"^1.0.4","file-loader":"^0.11.2","is-function":"^1.0.1","stream-http":"^2.7.2","query-string":"^5.0.1","route-parser":"0.0.5","whatwg-fetch":"^2.0.4","octree-helper":"^0.6.2","sleep-promise":"^6.0.0","sparse-octree":"^4.2.2","webpack-merge":"^4.1.1","worker-loader":"^1.1.1","postprocessing":"^4.5.0","@tweenjs/tween.js":"^17.2.0","html-webpack-plugin":"^2.30.1","three-instanced-mesh":"^85.3.3","esdoc-standard-plugin":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.0","@cognite/three-orbit-controls":"^82.1.1","friendly-errors-webpack-plugin":"^1.6.1","esdoc-ecmascript-proposal-plugin":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chalk":"^2.3.0","eslint":"^4.18.2","express":"^4.16.2","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.0.2_1528816730716_0.49967266155378187","host":"s3://npm-registry-packages"}},"2.0.3":{"name":"@cognite/3d-viewer","version":"2.0.3","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.0.3","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"seamuffin","email":"seamuffin@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"74828959f4fc03890c219a171b8900789aa8798a","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.0.3.tgz","fileCount":3,"integrity":"sha512-r88Ho+HHfPwY0FjWjzZuEnCXnYFSchSOIdQRMHdBOaEBB5Hkt9gXUMFtk3JoGXiwTuh+RhYOwN0ELCUSeE/L2w==","signatures":[{"sig":"MEUCIQCdKyMYtQ/Td1fU9zsUy/ABk0MxFbsiQjYnFLNWgkY7qAIgR2srDOocDw71tfREgLgs1wTfZ5WMSeVtbzxj67/Jbz8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1637228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbH+j6CRA9TVsSAnZWagAAnGsP/1B5IjoxJaYs5VNPCEZ7\nx+v843e5WQ+oyzGPBEX+sc7OkI1MnLY4UL56W+v47pndnEw9Kp3ZE7YnqUMB\n3N91LPy7G8hKHM7L8zB54MjVlOHJQqMlRVnOxwZWo+pLrUFZ1CuqHFZr97eT\npUi01+XknWciLfflQ1OTC4TbI7Ne+QsKFepIlQTaq2IrDNJ/Z5/rs1t9fMNw\nxTTauNEKx7xIARkH1pZBCAo+Fg7LySSZZjknzYwz3/BPcMMMM8nhqkhccdWh\n+9jOXNwICWGP7mL5eolqByRO6PeXkHtyg0HkRNChsyDZHrEGcHzPm0uy9E3L\n06P70pVAVZFFekoe6KKmpOHnB8xyO7A18WK/kxQYFpPE9t1x+M+lsH5S3WaF\nzQSUrGJoG9lNEMxKSH8p4M9ZMZE/vnq4QWb8D918LQ44clQ/cMJlIk7QXqqg\n2NURn1j/Ka3Ot5an4YaJF8U0wGpitvVadcOA0qqzKmmrVCJYnNYF56omyPv3\naJV9hjyEpsdUT78hxOuNiTxFt7KWtH4Biikbb2s7Ncf7Ymw3fUuBK8/y+vMn\n43Ais2S+bqSRPS1+dD+qlxq440dRIH+UkjJFzdwkGpZYEaLUBD3Li4w8kKTg\npmhL5QagsMbjkm9fJoihJC92pk2TxPzqd0iCbJ91wOq/NpZGNh0tjnRbgKbo\noJe7\r\n=4bEz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"3cbff999338a1fd39f96ee24a8fb4ff0eed6bf6e","scripts":{"dev":"node build/dev-server.js","lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"esdoc","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.4.2","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"This is the repository for the Cognite 3D Viewer. Currently this will also contain the documentation for the Cognite3DViewer.","directories":{},"_nodeVersion":"8.4.0","dependencies":{"opn":"^5.1.0","ora":"^1.3.0","pako":"^1.0.6","spdy":"^3.4.7","clamp":"^1.0.1","esdoc":"^1.1.0","mocha":"^4.1.0","three":"^0.90.0","global":"^4.3.2","semver":"^5.4.1","defined":"^1.0.0","shelljs":"^0.7.8","webpack":"^3.8.1","is-array":"^1.0.1","prettier":"^1.11.1","right-now":"^1.0.0","protobufjs":"^6.8.6","raw-loader":"^0.5.1","url-loader":"^1.0.1","fast-filter":"^1.0.4","file-loader":"^0.11.2","is-function":"^1.0.1","stream-http":"^2.7.2","query-string":"^5.0.1","route-parser":"0.0.5","whatwg-fetch":"^2.0.4","octree-helper":"^0.6.2","sleep-promise":"^6.0.0","sparse-octree":"^4.2.2","webpack-merge":"^4.1.1","worker-loader":"^1.1.1","postprocessing":"^4.5.0","@tweenjs/tween.js":"^17.2.0","html-webpack-plugin":"^2.30.1","three-instanced-mesh":"^85.3.3","esdoc-standard-plugin":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.0","@cognite/three-orbit-controls":"^82.1.1","friendly-errors-webpack-plugin":"^1.6.1","esdoc-ecmascript-proposal-plugin":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chalk":"^2.3.0","eslint":"^4.18.2","express":"^4.16.2","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.0.3_1528817913705_0.9333061614010016","host":"s3://npm-registry-packages"}},"2.0.4":{"name":"@cognite/3d-viewer","version":"2.0.4","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.0.4","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"seamuffin","email":"seamuffin@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"dist":{"shasum":"ea0207e97209f2f195c43c0ab3eeccdf5862b025","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.0.4.tgz","fileCount":5,"integrity":"sha512-ZHW4SGPL1IjuuMtPARmXy1tsrcqH10Mcn3Vbkcis8NzGSDqy1Bw73m6BI7KmokKkHAYFV6OKWvNhYnDxhzHR2Q==","signatures":[{"sig":"MEUCIGGYvN3EAE4nsC3+DLWFft69aEKhcnph9Fz3dzI5yW+vAiEA1L0HzGjn9pzFxpenkZF2ggmOQBMS5ilTVrioqAbQmJY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1672934},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"dev":"node build/dev-server.js","lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"esdoc","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"https://github.com/cognitedata/3d-viewer.git","type":"git"},"browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"This is the repository for the Cognite 3D Viewer. Currently this will also contain the documentation for the Cognite3DViewer.","directories":{},"dependencies":{"opn":"^5.1.0","ora":"^1.3.0","pako":"^1.0.6","spdy":"^3.4.7","clamp":"^1.0.1","esdoc":"^1.1.0","mocha":"^4.1.0","three":"^0.90.0","global":"^4.3.2","semver":"^5.4.1","defined":"^1.0.0","shelljs":"^0.7.8","webpack":"^3.8.1","is-array":"^1.0.1","prettier":"^1.11.1","right-now":"^1.0.0","protobufjs":"^6.8.6","raw-loader":"^0.5.1","url-loader":"^1.0.1","fast-filter":"^1.0.4","file-loader":"^0.11.2","is-function":"^1.0.1","stream-http":"^2.7.2","query-string":"^5.0.1","route-parser":"0.0.5","whatwg-fetch":"^2.0.4","octree-helper":"^0.6.2","sleep-promise":"^6.0.0","webpack-merge":"^4.1.1","worker-loader":"^1.1.1","postprocessing":"^4.5.0","@tweenjs/tween.js":"^17.2.0","html-webpack-plugin":"^2.30.1","three-instanced-mesh":"^85.3.3","esdoc-standard-plugin":"^1.0.0","@cognite/sparse-octree":"^4.3.2","uglifyjs-webpack-plugin":"^1.1.0","@cognite/three-orbit-controls":"^82.1.1","friendly-errors-webpack-plugin":"^1.6.1","esdoc-ecmascript-proposal-plugin":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chalk":"^2.3.0","eslint":"^4.18.2","express":"^4.16.2","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.0.4_1528846886697_0.9638713380861881","host":"s3://npm-registry-packages"}},"2.0.5":{"name":"@cognite/3d-viewer","version":"2.0.5","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.0.5","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"seamuffin","email":"seamuffin@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"dist":{"shasum":"3be628b3f46cc1f5e59f64b2c623b6dc0b1e9691","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.0.5.tgz","fileCount":5,"integrity":"sha512-h6tVjDg2IactbwyB0ADahpa5HiY39DNBjfY7/5xygDgT6QHJP8kvAff2NobarIj219Jy5PumYT7Flg1zV3of+g==","signatures":[{"sig":"MEQCIAg02ofdZ+6sNG5/nNFubVFzNJDN6n5VMRDg68+2Mh8TAiBF1CSqE2hs68ootEkbVDP6NomEPwJDv41eVWrzBNtxqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1670748},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"dev":"node build/dev-server.js","lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"esdoc","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"https://github.com/cognitedata/3d-viewer.git","type":"git"},"browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"This is the repository for the Cognite 3D Viewer. Currently this will also contain the documentation for the Cognite3DViewer.","directories":{},"dependencies":{"opn":"^5.1.0","ora":"^1.3.0","pako":"^1.0.6","spdy":"^3.4.7","clamp":"^1.0.1","esdoc":"^1.1.0","mocha":"^4.1.0","three":"^0.90.0","global":"^4.3.2","semver":"^5.4.1","defined":"^1.0.0","shelljs":"^0.7.8","webpack":"^3.8.1","is-array":"^1.0.1","prettier":"^1.11.1","right-now":"^1.0.0","protobufjs":"^6.8.6","raw-loader":"^0.5.1","url-loader":"^1.0.1","fast-filter":"^1.0.4","file-loader":"^0.11.2","is-function":"^1.0.1","stream-http":"^2.7.2","query-string":"^5.0.1","route-parser":"0.0.5","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","webpack-merge":"^4.1.1","worker-loader":"^1.1.1","postprocessing":"^4.5.0","@tweenjs/tween.js":"^17.2.0","html-webpack-plugin":"^2.30.1","three-instanced-mesh":"^85.3.3","esdoc-standard-plugin":"^1.0.0","@cognite/sparse-octree":"^4.3.2","uglifyjs-webpack-plugin":"^1.1.0","@cognite/three-orbit-controls":"^82.1.1","friendly-errors-webpack-plugin":"^1.6.1","esdoc-ecmascript-proposal-plugin":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chalk":"^2.3.0","eslint":"^4.18.2","express":"^4.16.2","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.0.5_1528847715327_0.3366787512391749","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@cognite/3d-viewer","version":"2.1.0","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.1.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"seamuffin","email":"seamuffin@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"dist":{"shasum":"c0e0355ee97d045d2cc558dab3ea93e636456141","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.1.0.tgz","fileCount":5,"integrity":"sha512-OYlU51toQD1jqs47ITTVo8SldlWQ5Qx6tjwq0p0QCdoA2+l1xEoh5X8NhpC07hdUb8X7fugVCww3sJD/565xlA==","signatures":[{"sig":"MEYCIQCEMPBflgvy8IzATjvu91Di0d0u++8iuMoS3F0Vx/UEhwIhAKcR87yW6ZK4Iezxy7yDWLIECE/PkQc8Mc7cSz9nV66d","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1679007},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"dev":"node build/dev-server.js","lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"esdoc","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"https://github.com/cognitedata/3d-viewer.git","type":"git"},"browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"This is the repository for the Cognite 3D Viewer. Currently this will also contain the documentation for the Cognite3DViewer.","directories":{},"dependencies":{"opn":"^5.1.0","ora":"^1.3.0","pako":"^1.0.6","spdy":"^3.4.7","clamp":"^1.0.1","esdoc":"^1.1.0","mocha":"^4.1.0","three":"^0.90.0","global":"^4.3.2","semver":"^5.4.1","defined":"^1.0.0","shelljs":"^0.7.8","webpack":"^3.8.1","is-array":"^1.0.1","prettier":"^1.11.1","right-now":"^1.0.0","protobufjs":"^6.8.6","raw-loader":"^0.5.1","url-loader":"^1.0.1","fast-filter":"^1.0.4","file-loader":"^0.11.2","is-function":"^1.0.1","stream-http":"^2.7.2","query-string":"^5.0.1","route-parser":"0.0.5","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","webpack-merge":"^4.1.1","worker-loader":"^1.1.1","postprocessing":"^4.5.0","@tweenjs/tween.js":"^17.2.0","html-webpack-plugin":"^2.30.1","three-instanced-mesh":"^85.3.3","esdoc-standard-plugin":"^1.0.0","@cognite/sparse-octree":"^4.3.2","uglifyjs-webpack-plugin":"^1.1.0","@cognite/3d-camera-controls":"^1.0.1","friendly-errors-webpack-plugin":"^1.6.1","esdoc-ecmascript-proposal-plugin":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"chalk":"^2.3.0","eslint":"^4.18.2","express":"^4.16.2","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.1.0_1529657918677_0.544404577130454","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"@cognite/3d-viewer","version":"2.1.1","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.1.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"seamuffin","email":"seamuffin@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"dist":{"shasum":"0155e5fe649828575ce8273fad27a22f507a41f8","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.1.1.tgz","fileCount":5,"integrity":"sha512-+lcTMG4j6ZE993/TJjel+znZa3n/DX1p4Phwtzt28Ri72Uo1k+Y/c879NJvoPEVc1mSMBd+edTswrdDZ+CXvoA==","signatures":[{"sig":"MEQCIAvKoWIOUpDhj2MjduAcgwykh0dr1bmz/+P/TvNL507dAiAfg7gGjal2iK29tDtb/cU7uXaczHHzXxKA6TFw1m+cqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":992619},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"esdoc","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"https://github.com/cognitedata/3d-viewer.git","type":"git"},"browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"This is the repository for the Cognite 3D Viewer. Currently this will also contain the documentation for the Cognite3DViewer.","directories":{},"dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/sparse-octree":"^4.3.2","@cognite/3d-camera-controls":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","esdoc":"^1.1.0","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","esdoc-standard-plugin":"^1.0.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0","esdoc-ecmascript-proposal-plugin":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.1.1_1529931040343_0.11055385448384536","host":"s3://npm-registry-packages"}},"2.1.3":{"name":"@cognite/3d-viewer","version":"2.1.3","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.1.3","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"dist":{"shasum":"1f2b2f437a906d2aa1a7881cdc58e4f5c781f1fd","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.1.3.tgz","fileCount":5,"integrity":"sha512-q2NPDZXN8qsowJBiP0XCeKi42p5o2EX53Jn3lR3VzA+glS+d4I/hSLx19loBfmnzpg8oT4wjgoPKLu1Ret+xbg==","signatures":[{"sig":"MEYCIQChJbrW9Ws723cUMqMqvhAsBdu6j9+bMHq47Hg0Nd41egIhAKBULlXhHW+Z+akpyCvKiFarQWhktD29ZEktn9+0rIoK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1007632},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme src/** --section='API Reference' --format=md --access='public'","precommit":"npm run buildDocs","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build && npm run buildDocs"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"https://github.com/cognitedata/3d-viewer.git","type":"git"},"browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/sparse-octree":"^4.3.2","@cognite/3d-camera-controls":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.1.3_1530046567485_0.055427659311648725","host":"s3://npm-registry-packages"}},"2.1.4":{"name":"@cognite/3d-viewer","version":"2.1.4","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.1.4","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"6bc37fc26b0032599a8a3a4dcb4c61dfb7bcd627","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.1.4.tgz","fileCount":3,"integrity":"sha512-krsddOqSGVF3p6MG+OLElWR6uhuG+wpQfftAyd8AqVH+02CPLx5H1043CsPwbg4BeDrQbY9k80F37vCg8A4b6A==","signatures":[{"sig":"MEQCIAhUawEbTweQFKgY29J+ubMzSEwbrF7RUJ9zIbb7V8AIAiAfcXSOmZj5rJUJjrJhZ5c3PnzV9BHK+7H7K8IRWOLl8g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1007780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbPOHrCRA9TVsSAnZWagAAzTIP/jFPDvAAhOPw+Q4akmXT\nUNCaYXMp+9itBtDSaqTazIn5zz0yt7pA3SGVEMA7y59b5VvGWSog+HcJICZW\nAfxZMm+cwfSs9UGw/xcj4ZWrhiC3lWwH2XArfKAEIqQSnEMBfh5CN6I79uVX\nORgc8ji0T0vGmEoZ1JSS6oBSNPMcOG/c2lw5HdyOYBAyugmAuOfLi23m/NK6\nYI3+d4k+1szb6wkwD8e+XttLjXdyN9jzC/vg3HoeL/iUSO2Wb/5IQUfYGJtc\nz3j3ahs4M2lKzNStTWQfBqYdeNV00tcFW4R2GYTubf/CvjGUuiwyXEq46Ydx\np0bKmS5/PEpKcSQAJWF/sK5Ow63oaNqqMhMwlS7hWDijH06yprIME1bIFl/q\nastPc7ttqfENKTRTAGiVaqks2SXCIHhCx2AzM3X6lAHPNYlxVbx9/6zSzPSd\ncYgrhke2aGtqaAfzrmK3zDMfKMbipmXM8dNBItptAWN7Zqkpm2DY/R7nG2Rp\nrpM9r8jhpcclP3qY3CWB6qQBcxqem8ZVAY72kyZm1/nJ88O04Y+Yxdzmuv0r\n4Yn7EeK351bgYGrhtlK/kzDkwf6bUsXiP6EUYzbXw6ggqJ6lNlMLwbnoHGus\nT43i8cKfqpwUpBRRMJJvNp/Tze48c/WDPYxU9HJ25M5GmWWgD/NUvCTC5+F3\npFTv\r\n=dAGm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"f617dcc82fd59159d9848a8598d6d35eb84b0932","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme src/** --section='API Reference' --format=md --access='public'","precommit":"npm run buildDocs","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build && npm run buildDocs"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.1.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"8.11.3","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/sparse-octree":"^4.3.2","@cognite/3d-camera-controls":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-polyfill":"^6.26.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.1.4_1530716651786_0.0187638905766514","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"@cognite/3d-viewer","version":"2.2.0","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.2.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"dist":{"shasum":"3a85ffd0229f3a3543318ee07cfa7d0f52fff70c","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.2.0.tgz","fileCount":5,"integrity":"sha512-wj+4Ooom38KTaeFmvcTlauGRi8e6v2UlD0vbAei5dDqBcB1RVIPZcGnDD1yDPTP5L7i+xRVWe51QJZBzBgFyaQ==","signatures":[{"sig":"MEUCIDjk6oRrowsBgds6Gv0IaXs/K1ZJnaOonCdjSGRhLdsRAiEAuDnkYuzdx6wwupFMQz34G2m9YZllfSIlnbH9NC3iTpI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":917845},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme src/** --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"https://github.com/cognitedata/3d-viewer.git","type":"git"},"browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.2.0_1531138958958_0.28092120684889865","host":"s3://npm-registry-packages"}},"2.2.1":{"name":"@cognite/3d-viewer","version":"2.2.1","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.2.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"dist":{"shasum":"d9c7d33480c68d07d5731e506480f130af52d9b0","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.2.1.tgz","fileCount":5,"integrity":"sha512-lWotm+HTVFxe5J9bXSIQGOsjbGvkM0fEfAFJBktJRHsnyP6aYQnD43Jo5ubifXvLRiS/kyjVjkk2F020+XgBXw==","signatures":[{"sig":"MEUCIQCWdYOeud8ed3xh7Rg0qL66/xA9usEJ9VD0b6x6l9my8AIgMaG6dcFpM5qAVgF5O+v1FDi2K8MYS7zrataqcteRe1U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":917845},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme src/** --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"https://github.com/cognitedata/3d-viewer.git","type":"git"},"browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.2.1_1531140022117_0.5991779885291781","host":"s3://npm-registry-packages"}},"2.2.2":{"name":"@cognite/3d-viewer","version":"2.2.2","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.2.2","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"dist":{"shasum":"e435d24eac3337541c9082b92ef1b3f0732283a5","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.2.2.tgz","fileCount":5,"integrity":"sha512-NpypECgg2nJqL3SCfmag5dCClw+ZtTMccVQrI0OJQHScMB9CbFK3ISCMwnps4j31+bkjJ5wi+SaoluZS321SBA==","signatures":[{"sig":"MEYCIQCJ3V265baIyFIomRSZD0g9hYWzBoKDoajaNvS7NbASJgIhAKdPEYzgoQrQsGm2TVvcwznKv3cfLxH91IdRSuJplmL4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":917975},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme src/** --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"https://github.com/cognitedata/3d-viewer.git","type":"git"},"browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.2.2_1531140469529_0.6555141543033387","host":"s3://npm-registry-packages"}},"2.2.3":{"name":"@cognite/3d-viewer","version":"2.2.3","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.2.3","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"dist":{"shasum":"15b2d9391b8d4bb49436f5b8d4a4a68293ec9c01","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.2.3.tgz","fileCount":5,"integrity":"sha512-yh17zEH94hthRppHi+DYWZfOswOFlnPIRd7jgy+uqKnvuznE8fiuYJeAbZf7fpc0GoxNEkLY09R4EFubLFfyTA==","signatures":[{"sig":"MEUCIQCY5o+80LbjJSEyEijJMVY2wXKsB+OEwjreG+IsFJiWmQIgUKeMLQlGGb/qYvxF/xa10F8FB5qOLhbUFc3pBY7f8Fk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":918002},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme src/** --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik@sharemy3d.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"https://github.com/cognitedata/3d-viewer.git","type":"git"},"browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.2.3_1531141355132_0.5021949402500889","host":"s3://npm-registry-packages"}},"2.2.4":{"name":"@cognite/3d-viewer","version":"2.2.4","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.2.4","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik@sharemy3d.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"384e86f970648956f2652f09a5c309dde6505fed","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.2.4.tgz","fileCount":3,"integrity":"sha512-ZdE4XxOp8JwA2rab4UCExNa9iu/Erq99Pw812DFVPnA9+vTu/Cr58kHuoBIKgKr/Wno9D5yM4pII78nR3fIfpA==","signatures":[{"sig":"MEQCIHxqXjyPWQUVYosOxypJjrkeBvvJ+WyLcbLrB2eAeLRUAiBXtEc7+GVGCxk1Az5FuoOh1kDzH1yLn/SIz6kC/Dn5Dg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":949138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbXw1JCRA9TVsSAnZWagAAvrMQAKIrHgRjgWvVj2Zt8iq3\nNuLWR1AWUypoV3TbYc9xfZTLnsQ+8hitRivOxUTpA/Z3yrQiI/dXe+oVbtgz\nmdEGqohdW/7HBuzBAPDD3pQfjZd5C0OiQQfLfzmx8U7uCyKLfX3QuPmWz3NI\ne3kfTdwkCtoZ1oHMfccBqiY/9Cu4COmjucESF1HvattNVynY28jAXdnpP9k8\nt8a3ktPM08GI/0+Gbe7wQPDOsyXa/rr4dqA5cIBEyrrk8+Y2YTMhZM6F2/9Y\n+SxmsYxBz+XoNGfc/4jGNwKzQ3fW3X1pUjeNLi/rdNZ2NEXmsysaGn/FBcXP\nKGv5ymFLjStEQRqrHMNUbVDcJ+svi5TlVLJgma+H1yMqIuxhDWIKtscWaF4w\n/uuusVgUwPSxd4wFJPnFH+BRXVoFpYTaPhoOnrMjlkIv6H43x71+KTTNHZ3B\nrZyjnSHwFGcxFVzw/Kl+M0WxeJ4V0qmq6C5teg3PEQwwZ0OoT89jqHQABi/f\nKqIium3MSUAOyRzPKwd2Bq4klRHjuruA+5B0FQVJnxecrxjiwohY+nOlXs1x\n6Qiq6NA4nXDmlMDVNNN3Gx7JWY7hwqF+fTKqPegu/vsKNR27EuA2HHD4Z8wr\n3saGrJxUeGQjt5Abto5vts+ovJw2aPJ1EZg8WC75B+YTn9qvIFivehDKeyAu\nyaAv\r\n=d5cu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","files":["dist"],"engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"3a661c3e7ee194766ebac3094be4470ef0fdedb1","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme src/** --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"frxstrem","email":"frx.apps@gmail.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.2.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.0.0","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.2.4_1532955977033_0.6783195507151842","host":"s3://npm-registry-packages"}},"3.0.0-rc1":{"name":"@cognite/3d-viewer","version":"3.0.0-rc1","license":"UNLICENSED","_id":"@cognite/3d-viewer@3.0.0-rc1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"583af2c5c3c8dc1dcbae920413a638898f14f1bc","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.0.0-rc1.tgz","fileCount":3,"integrity":"sha512-h7eNyQNOVRD17OvXc2Zsy1FDSgsvJ9+oBFBw9UFVAd08bSZg7PnNikkGH1/glVdZ5urYPGnmqa0Ea9XXuj7vyQ==","signatures":[{"sig":"MEUCIQCKgrxH5NTIXW2bd5rkPI2CHufQ48G+wVo6CF7mdg+pbAIgVxZuPLLEO0HLdXvTiky5KQ/nNArFdwaDqpRjSgrcczM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkQRYCRA9TVsSAnZWagAAdX0P/3UzEukDJig1OiyZFVGm\nRzYlnR6Z8cjwQsVRVUc5LfUGaeXyMA36BK8T/lnlcklO9ikXkkwFMk1fmIjY\nXYUzOzTiOjrqATVlr1Q2BC/htEokrnU5zp7Z6flM+JmNLHeLArkBVs8sJtEx\n4+u3ZF3Y6ldcfSuDjacfXGPTVxqFZ7wiyq865bazzkJyJ/mmGp3iU8DgB9N4\n6Ke4oY+s6Nq4elTMUig9QpE7TorzFKKdL1aEBLcatlSRZV/ysjQATLgdFek9\nPfhjnUYJFXjuSS3oNeRsEgYwF3ifrvL3YMav78rluEsvkjRXNL700axKTlbM\n5FL3BX0fZOF2Rl3j3+s8RU+H7hP1TukFM1WBRBmD1SjdqTIZLa0+2pSqi2iR\nKm/rGVb8NHjTxpbML6FpHFKPQqDSSbtEk+Ow+5j7/32Fp/Ylfvre9AdfHbIw\n/L74zxifQYs2EtDxaBtPigg/iZuS4beEI5nnSQGAL4JcwLTHdNrW3pKtMumV\nt70XWYjmA3rKHuiyd0eGyf/HCRKTRuxe8F/oTmaYUNxyuD3/KWR5SDHRCLXN\naiOtYWsr6NQU/FvJ5CniDyebjCiTvZiEDRXVVnIIHtNoqynQhBbvbKgY0Ac+\npr+FzPdgkYBfVRk7/xxnLbxNglAQVJdFbRPMW9UOWEJYl0/K7U1HVJ0subTI\nH/N7\r\n=6/Ck\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","_from":"file:cognite-3d-viewer-v3.0.0-rc1.tgz","readme":"# Cognite's 3D Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n#### Table of Contents\n\n-   [Install](#install)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Development Usage](#development-usage)\n    -   [How to build](#how-to-build)\n    -   [How to publish](#how-to-publish)\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Usage\n\n### With import\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\nconst viewer = new Cognite3DViewer();\n```\n\n### With script tag\n\n```html\n<script src=\"{path to this folder}/lib/cognite.bundle.js\"></script> // Now you have 'cognite' as a global object\n<script>\n  var viewer = new cognite.Cognite3DViewer();\n</script>\n```\n\n### Sample code\n\n```js\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// start rendering\nviewer.start();\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case\n>\n> ```css\n> canvas {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the model clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const nodeId = model.getNodeIdFromPixel(viewer.camera, viewer.renderer, offsetX, offsetY);\n  if (nodeId != null) {\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [start](#start)\n        -   [Examples](#examples-2)\n    -   [stop](#stop)\n        -   [Examples](#examples-3)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-4)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-5)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-6)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-7)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-8)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-9)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-10)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-6)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-7)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-8)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-11)\n    -   [getNodeIdFromPixel](#getnodeidfrompixel)\n        -   [Parameters](#parameters-10)\n        -   [Examples](#examples-12)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-11)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-12)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-13)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-14)\n    -   [deselectAllNodes](#deselectallnodes)\n-   [AssetMapping](#assetmapping)\n    -   [Properties](#properties)\n-   [getAssetInfoFromNodeId](#getassetinfofromnodeid)\n    -   [Parameters](#parameters-15)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-13)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### start\n\nStart viewer, or resume after calling [stop](https://developer.mozilla.org/docs/Web/API/Window/stop)().\n\n##### Examples\n\n```javascript\nviewer.start();\n```\n\n#### stop\n\nStop the viewer. When stopped, the viewer will not do work, but it's state will be kept so it can\nrestart immediately after [start](start)() is called.\n\n##### Examples\n\n```javascript\nviewer.stop();\n```\n\n#### on\n\n-   **See: [off](off)**\n\nAdd event listener to the viewer\ncall [off](off) to remove an event listener\n\n##### Parameters\n\n-   `type` **`\"click\"`** \n-   `func` **function (event:MouseEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n#### off\n\n-   **See: [on](on)**\n\nRemove event listener from the viewer\ncall [on](on) to add an event listener\n\n##### Parameters\n\n-   `type` **(`\"click\"`)** \n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](fitCameraToModel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.sceneId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Default to the latest scene (optional, default `'latest'`)\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in global space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in global space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in global space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in global space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](disableKeyboardNavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](enableKeyboardNavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](fitCameraToBoundingBox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](fitCameraToBoundingBox)\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and it's state\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeIdFromPixel\n\nRaycasting for nodes\n\n##### Parameters\n\n-   `camera` **THREE.Camera** \\-- The camera to project from\n-   `renderer` **THREE.WebGLRenderer** \\-- A renderer. The raycaster will render an image to memory for efficiency.\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **([number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number) | null)** \\-- If there was a hit then returns the node id\n\n#### getNodeColor\n\n-   **See: [setNodeColor](setNodeColor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), a: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](getNodeColor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n-   `a` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The alpha value (0-255) (optional, default `255`)\n\n#### selectNode\n\n-   **See: [deselectNode](deselectNode)**\n-   **See: [deselectAllNodes](deselectAllNodes)**\n\nMark a node as selected\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](selectNode)**\n-   **See: [deselectAllNodes](deselectAllNodes)**\n\nMark a node as deselected\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n### AssetMapping\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\--\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\--\n\n### getAssetInfoFromNodeId\n\nGet the assets associated with a given node.\n\n#### Parameters\n\n-   `projectName` **strigng** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **any** \\-- The ID of the 3D model\n-   `revisionId` **any** \\-- The ID of the 3D model revision\n-   `nodeId` **any** \\-- The ID of the node to get the associated assets of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[AssetMapping](#assetmapping)>>** \n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.sceneId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Default to the latest scene (optional, default `'latest'`)\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Development Usage\n\n### How to build\n\n-   Install `yarn` (`npm install -g yarn`).\n-   Run `yarn` to install packages.\n-   Run `yarn run start` and go to `http://localhost:3000` where the [index.html](index.html) file is hosted.\n\nCheck out `scripts` in [package.json](package.json) for more commands.\n\n### How to publish\n\n-   Run `yarn publish`, make sure you have bumped the version first!\n\n### Update protobuf schema\n\n-   Run `yarn run pbjs -t json -o src/proto/web_scene.json {path to web_scene.proto}`\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"_resolved":"","_integrity":"","deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.2.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.10.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.0.0-rc1_1536230487680_0.11264161738237699","host":"s3://npm-registry-packages"}},"3.0.0-rc2":{"name":"@cognite/3d-viewer","version":"3.0.0-rc2","license":"UNLICENSED","_id":"@cognite/3d-viewer@3.0.0-rc2","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"0f82101005881f573007c219c699a1f5ee2f5ffb","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.0.0-rc2.tgz","fileCount":3,"integrity":"sha512-pZXFOl2M6/4+YTDHkE/Ggh4uql6d7qazWL6dLH9tVsKhOZbK9iCtghGGqjN+9bMGsiktBTOj3i3aOL/8LOVDGg==","signatures":[{"sig":"MEQCIHRK0YrXRNTDtxrbxiOge+/iTHb8OJ85lpoCp71IPPQlAiATgxqTWhCELzN1uETjbeDJM1YdLgpVuZKk8csh/MUCxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":968301,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkiFCCRA9TVsSAnZWagAAKNIP/RqB/XZgbWiiPE408nwQ\nzxAA/8JlTscqXjmYFmaKQ5G+licVwKW8UZ7IU4B1qiBYYiiyF7KOFdZJViuO\ngFvP4x9ONfdimubRh74qTz5RywDqKGms19a5QRj9/UGXLUANw9FzZAq0wdtL\n8oa03j7cmoOMGbu9ZsHDiRGXe5SZKPj38jkZPQnxmjfmZZF7ekQk3M0+17Ot\nAB/iFOTo7qdyPjYPuM3rr0e2tNbjz6fM0saSrJpKoS2yfq20NfMtnfwa6yuJ\n8gjXadQtNtWs5VVMMmz3bOgCY3YhJqBELEutkWRMX419qksc09ILKc6zaZAQ\nFb+8QtsjTBfxac8L3JRPXJN3YUso/tF86FKdKYrEx2Q/ttF/fGjGJSLMxJN6\n3bOoe85y0mx/2yAwB0yck9uRYIkqmR+SgnxKl9ID2De67YjgHUst/5GOY+ne\n63dU0YEFnBL4pp/UkIG2ixwd5j5ztfA+k2Jz3Ievkwag4uL+Q3W61DJRsNw+\nfKlV1R67IHT5k1rzaupXM5tpE4j52jjbQlXziztjE+YF4nWXTNxoZz6+GD/B\nvB6UJ3kqrIjctUnR8r4k1R7U/ibf2CYOrg16ZH356/Z7rxc3FvlEYtPpLdda\npdAiB/DGwx6Ro+ImEKnX0c/MAaSVxwZaTZpYPYrnu+tn81c8KqmOBqIA1ZH9\nW8Bk\r\n=9H1X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","readme":"# Cognite's 3D Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n#### Table of Contents\n\n-   [Install](#install)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Development Usage](#development-usage)\n    -   [How to build](#how-to-build)\n    -   [How to publish](#how-to-publish)\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Usage\n\n### With import\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\nconst viewer = new Cognite3DViewer();\n```\n\n### With script tag\n\n```html\n<script src=\"{path to this folder}/lib/cognite.bundle.js\"></script> // Now you have 'cognite' as a global object\n<script>\n  var viewer = new cognite.Cognite3DViewer();\n</script>\n```\n\n### Sample code\n\n```js\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// start rendering\nviewer.start();\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case\n>\n> ```css\n> canvas {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the model clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const nodeId = model.getNodeIdFromPixel(viewer.camera, viewer.renderer, offsetX, offsetY);\n  if (nodeId != null) {\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [start](#start)\n        -   [Examples](#examples-2)\n    -   [stop](#stop)\n        -   [Examples](#examples-3)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-4)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-5)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-6)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-7)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-8)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-9)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-10)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-6)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-7)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-8)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-11)\n    -   [getNodeIdFromPixel](#getnodeidfrompixel)\n        -   [Parameters](#parameters-10)\n        -   [Examples](#examples-12)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-11)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-12)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-13)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-14)\n    -   [deselectAllNodes](#deselectallnodes)\n-   [AssetMapping](#assetmapping)\n    -   [Properties](#properties)\n-   [getAssetInfoFromNodeId](#getassetinfofromnodeid)\n    -   [Parameters](#parameters-15)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-13)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### start\n\nStart viewer, or resume after calling [stop](https://developer.mozilla.org/docs/Web/API/Window/stop)().\n\n##### Examples\n\n```javascript\nviewer.start();\n```\n\n#### stop\n\nStop the viewer. When stopped, the viewer will not do work, but it's state will be kept so it can\nrestart immediately after [start](start)() is called.\n\n##### Examples\n\n```javascript\nviewer.stop();\n```\n\n#### on\n\n-   **See: [off](off)**\n\nAdd event listener to the viewer\ncall [off](off) to remove an event listener\n\n##### Parameters\n\n-   `type` **`\"click\"`** \n-   `func` **function (event:MouseEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n#### off\n\n-   **See: [on](on)**\n\nRemove event listener from the viewer\ncall [on](on) to add an event listener\n\n##### Parameters\n\n-   `type` **(`\"click\"`)** \n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](fitCameraToModel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.sceneId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Default to the latest scene (optional, default `'latest'`)\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in global space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in global space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in global space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in global space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](disableKeyboardNavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](enableKeyboardNavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](fitCameraToBoundingBox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](fitCameraToBoundingBox)\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and it's state\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeIdFromPixel\n\nRaycasting for nodes\n\n##### Parameters\n\n-   `camera` **THREE.Camera** \\-- The camera to project from\n-   `renderer` **THREE.WebGLRenderer** \\-- A renderer. The raycaster will render an image to memory for efficiency.\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **([number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number) | null)** \\-- If there was a hit then returns the node id\n\n#### getNodeColor\n\n-   **See: [setNodeColor](setNodeColor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), a: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](getNodeColor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n-   `a` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The alpha value (0-255) (optional, default `255`)\n\n#### selectNode\n\n-   **See: [deselectNode](deselectNode)**\n-   **See: [deselectAllNodes](deselectAllNodes)**\n\nMark a node as selected\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](selectNode)**\n-   **See: [deselectAllNodes](deselectAllNodes)**\n\nMark a node as deselected\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n### AssetMapping\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\--\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\--\n\n### getAssetInfoFromNodeId\n\nGet the assets associated with a given node.\n\n#### Parameters\n\n-   `projectName` **strigng** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **any** \\-- The ID of the 3D model\n-   `revisionId` **any** \\-- The ID of the 3D model revision\n-   `nodeId` **any** \\-- The ID of the node to get the associated assets of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[AssetMapping](#assetmapping)>>** \n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.sceneId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Default to the latest scene (optional, default `'latest'`)\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Development Usage\n\n### How to build\n\n-   Install `yarn` (`npm install -g yarn`).\n-   Run `yarn` to install packages.\n-   Run `yarn run start` and go to `http://localhost:3000` where the [index.html](index.html) file is hosted.\n\nCheck out `scripts` in [package.json](package.json) for more commands.\n\n### How to publish\n\n-   Run `yarn publish`, make sure you have bumped the version first!\n\n### Update protobuf schema\n\n-   Run `yarn run pbjs -t json -o src/proto/web_scene.json {path to web_scene.proto}`\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"4d247f73c315e5f02f83a15e05dadf6931ad6100","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.2.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.10.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.0.0-rc2_1536303425946_0.25510427107593014","host":"s3://npm-registry-packages"}},"3.0.0-rc3":{"name":"@cognite/3d-viewer","version":"3.0.0-rc3","license":"UNLICENSED","_id":"@cognite/3d-viewer@3.0.0-rc3","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"388d59547a376234f9a1c023a2a4bcde378c0ab4","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.0.0-rc3.tgz","fileCount":2,"integrity":"sha512-rFFI2BCl3MUnhIi8yddppC+SJii4PjC27lrh6mI7Re1abNDHpDPp4LlOckK8aqJcTnUz2FaF2PDeLkoTPivVrA==","signatures":[{"sig":"MEYCIQDOTM0wxJYaO5dMYr4XdvIH1v0iceunx9dTrbvE2pzDZAIhANgr1/s3txIHiWnwpyu4XQb7AEoKjId5i+XJ0cRlEgc0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkk0sCRA9TVsSAnZWagAAyngP/AzZH1AnII+eG+QFrYYw\ndcgh9fC07XnjgHI9KoaOVNynNiU1tYvrnn3G0tMDD/cYx1tirULCIJTXlvsM\n7a7u0j5ol1Q/5hQC4+TnTaYHGGFcLQW4Ab2FxP47yU/1eL4GpqjlChOsH6NQ\nvUwJvIHmgeJu/r6Hqdu2su/FNVDP04C1YxY9Qx93plAl81eVJ0jb60TcLd64\nJj0usvSFpQSWFe7XEq5tEaj12Z7PkLcMgJzTPFh9uLj4dl74YprcwhISSCeL\nECMMKk8RWluNHnzVhJ3Ecw1g95N+KYnjEnrpPIYc6DYNQ9OAW8NV2jEfLAIJ\n/zhlyTrca0a03952l8Z9MmRakKw04W87TF6aCy9FsMUu6bsC0XpYaOzJ+Tlv\nj7GHIGWdhnu+58QsV/IGk76/G4M6w2fMKZa6ThQT+QAxGnB/E1eMrHg9SCYE\nMu5ox2IECj7GSsb7vyvwTCvheyLhl712bBYrLjjaiU8V5fVhksgvnZu7zcje\npLG5i1J4pqOm4vU921L+DZtKR79YcTlNhEEiAfIo/ooaFrY04jNyli/63fIq\npQlHencck57QoJr1tKPX6pfBSdR3H4JDKf6BTAUPqJ7Xq9XgN9x41Fd7HUZa\nawPb5NLFPSGNjzQvDVjF9yY70U4xSian+XU09a9ELHcUl4PgPjSA1wCL5Zjs\ndNEV\r\n=7RWO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","readme":"# Cognite's 3D Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n#### Table of Contents\n\n-   [Install](#install)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Development Usage](#development-usage)\n    -   [How to build](#how-to-build)\n    -   [How to publish](#how-to-publish)\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Usage\n\n### With import\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\nconst viewer = new Cognite3DViewer();\n```\n\n### With script tag\n\n```html\n<script src=\"{path to this folder}/lib/cognite.bundle.js\"></script> // Now you have 'cognite' as a global object\n<script>\n  var viewer = new cognite.Cognite3DViewer();\n</script>\n```\n\n### Sample code\n\n```js\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// start rendering\nviewer.start();\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case\n>\n> ```css\n> canvas {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the model clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const nodeId = model.getNodeIdFromPixel(viewer.camera, viewer.renderer, offsetX, offsetY);\n  if (nodeId != null) {\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [start](#start)\n        -   [Examples](#examples-2)\n    -   [stop](#stop)\n        -   [Examples](#examples-3)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-4)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-5)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-6)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-7)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-8)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-9)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-10)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-6)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-7)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-8)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-11)\n    -   [getNodeIdFromPixel](#getnodeidfrompixel)\n        -   [Parameters](#parameters-10)\n        -   [Examples](#examples-12)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-11)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-12)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-13)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-14)\n    -   [deselectAllNodes](#deselectallnodes)\n-   [AssetMapping](#assetmapping)\n    -   [Properties](#properties)\n-   [getAssetInfoFromNodeId](#getassetinfofromnodeid)\n    -   [Parameters](#parameters-15)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-13)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### start\n\nStart viewer, or resume after calling [stop](https://developer.mozilla.org/docs/Web/API/Window/stop)().\n\n##### Examples\n\n```javascript\nviewer.start();\n```\n\n#### stop\n\nStop the viewer. When stopped, the viewer will not do work, but it's state will be kept so it can\nrestart immediately after [start](start)() is called.\n\n##### Examples\n\n```javascript\nviewer.stop();\n```\n\n#### on\n\n-   **See: [off](off)**\n\nAdd event listener to the viewer\ncall [off](off) to remove an event listener\n\n##### Parameters\n\n-   `type` **`\"click\"`** \n-   `func` **function (event:MouseEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n#### off\n\n-   **See: [on](on)**\n\nRemove event listener from the viewer\ncall [on](on) to add an event listener\n\n##### Parameters\n\n-   `type` **(`\"click\"`)** \n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](fitCameraToModel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.sceneId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Default to the latest scene (optional, default `'latest'`)\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in global space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in global space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in global space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in global space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](disableKeyboardNavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](enableKeyboardNavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](fitCameraToBoundingBox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](fitCameraToBoundingBox)\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and it's state\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeIdFromPixel\n\nRaycasting for nodes\n\n##### Parameters\n\n-   `camera` **THREE.Camera** \\-- The camera to project from\n-   `renderer` **THREE.WebGLRenderer** \\-- A renderer. The raycaster will render an image to memory for efficiency.\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **([number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number) | null)** \\-- If there was a hit then returns the node id\n\n#### getNodeColor\n\n-   **See: [setNodeColor](setNodeColor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), a: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](getNodeColor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n-   `a` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The alpha value (0-255) (optional, default `255`)\n\n#### selectNode\n\n-   **See: [deselectNode](deselectNode)**\n-   **See: [deselectAllNodes](deselectAllNodes)**\n\nMark a node as selected\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](selectNode)**\n-   **See: [deselectAllNodes](deselectAllNodes)**\n\nMark a node as deselected\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n### AssetMapping\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\--\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\--\n\n### getAssetInfoFromNodeId\n\nGet the assets associated with a given node.\n\n#### Parameters\n\n-   `projectName` **strigng** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **any** \\-- The ID of the 3D model\n-   `revisionId` **any** \\-- The ID of the 3D model revision\n-   `nodeId` **any** \\-- The ID of the node to get the associated assets of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[AssetMapping](#assetmapping)>>** \n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.sceneId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Default to the latest scene (optional, default `'latest'`)\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Development Usage\n\n### How to build\n\n-   Install `yarn` (`npm install -g yarn`).\n-   Run `yarn` to install packages.\n-   Run `yarn run start` and go to `http://localhost:3000` where the [index.html](index.html) file is hosted.\n\nCheck out `scripts` in [package.json](package.json) for more commands.\n\n### How to publish\n\n-   Run `yarn publish`, make sure you have bumped the version first!\n\n### Update protobuf schema\n\n-   Run `yarn run pbjs -t json -o src/proto/web_scene.json {path to web_scene.proto}`\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"4d247f73c315e5f02f83a15e05dadf6931ad6100","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.2.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.10.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.0.0-rc3_1536314668100_0.14233450338119957","host":"s3://npm-registry-packages"}},"3.0.0-rc4":{"name":"@cognite/3d-viewer","version":"3.0.0-rc4","license":"UNLICENSED","_id":"@cognite/3d-viewer@3.0.0-rc4","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"0402c3244a39b70322affcad035c145f83c30a2a","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.0.0-rc4.tgz","fileCount":2,"integrity":"sha512-8SZTdwvkWgWPgXO40E8nLnaurE0m7CARCVj4qv22avNU76FST1BswRXO3T74F0m5rg7w6Wrr/GAXzlN6cHkO2Q==","signatures":[{"sig":"MEYCIQCrlMOUSvYrTTYA7oGPRzwEE+MtVjQsmFNIiSgNmdvOFAIhAJ2YUKHiK0FofgfN3jRNAT5bYH+bYbclZvFawjz3PRPo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbljIYCRA9TVsSAnZWagAAxzQQAIjzeBduqjqR+v10WECo\nEFF32mF++zfQnzVhbQelgEBuS8mM+nzFKPXODEq7D+WvEkcyRJWmK+GlWHyJ\n62tQ/QVm+Yfvemw7/2ZnYpm7RvQ6zVgebCayXBWP409Cb66hes/xTbi7dZ3k\nn3uTVWpHVO3gN2zWVvaudur8KuzvkOkEcnRtBRo6Of3KLLcuCzPT7BquB5ZI\nXhvhVzBIS7UsKp/6UPU6k42FwF72YD1+a6gHN9bdNG35FfuKB6pkxSzfUk11\nIuTQbiS9eD2pN1Raa5XmcbYmPQJmee+aE0Y30cyjQtiq+8txiWfIWCqH3Gz0\nrVJqnJNXx9yr5lYArA550TrENn40v1LUEGFmjfy/693AVVyzM37QsxEiqKAs\n2RKvgwQ2kBP4gwmKKUwNjcA3IDnMrqeu7XrvHSQrb1ZUbS165pjp9ZGvjp9C\nr68vrtzqmendWXGA7yqgcDMML8TWgAnVXmZLTD4ppDT3xTciAtSqB+/D1fRh\nSxLLydonFaeAmZByDpyef/viU2PDSc6CeqmGzjv4nbvXj2DMCjrNL4mXTR/h\nniqsW8uNkFJ3C1G4H8wXpdN8znQIsNyWTZ5lBD+x029Ae3JWpsUviaVJiaq1\npqUmmk+0z97oqTMwfOmUzLjLLPhQSWXYAILCV3lM+VCoJ9D9lEKqAqRdducz\n2xQc\r\n=VTw8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","readme":"# Cognite's 3D Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n#### Table of Contents\n\n-   [Install](#install)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Development Usage](#development-usage)\n    -   [How to build](#how-to-build)\n    -   [How to publish](#how-to-publish)\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Usage\n\n### With import\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\nconst viewer = new Cognite3DViewer();\n```\n\n### With script tag\n\n```html\n<script src=\"{path to this folder}/lib/cognite.bundle.js\"></script> // Now you have 'cognite' as a global object\n<script>\n  var viewer = new cognite.Cognite3DViewer();\n</script>\n```\n\n### Sample code\n\n```js\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// start rendering\nviewer.start();\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case\n>\n> ```css\n> canvas {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the model clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const nodeId = model.getNodeIdFromPixel(viewer.camera, viewer.renderer, offsetX, offsetY);\n  if (nodeId != null) {\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [start](#start)\n        -   [Examples](#examples-2)\n    -   [stop](#stop)\n        -   [Examples](#examples-3)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-4)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-5)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-6)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-7)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-8)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-9)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-10)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-6)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-7)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-8)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-11)\n    -   [getNodeIdFromPixel](#getnodeidfrompixel)\n        -   [Parameters](#parameters-10)\n        -   [Examples](#examples-12)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-11)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-12)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-13)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-14)\n    -   [deselectAllNodes](#deselectallnodes)\n-   [AssetMapping](#assetmapping)\n    -   [Properties](#properties)\n-   [getAssetInfoFromNodeId](#getassetinfofromnodeid)\n    -   [Parameters](#parameters-15)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-13)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### start\n\nStart viewer, or resume after calling [stop](https://developer.mozilla.org/docs/Web/API/Window/stop)().\n\n##### Examples\n\n```javascript\nviewer.start();\n```\n\n#### stop\n\nStop the viewer. When stopped, the viewer will not do work, but it's state will be kept so it can\nrestart immediately after [start](start)() is called.\n\n##### Examples\n\n```javascript\nviewer.stop();\n```\n\n#### on\n\n-   **See: [off](off)**\n\nAdd event listener to the viewer\ncall [off](off) to remove an event listener\n\n##### Parameters\n\n-   `type` **`\"click\"`** \n-   `func` **function (event:MouseEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n#### off\n\n-   **See: [on](on)**\n\nRemove event listener from the viewer\ncall [on](on) to add an event listener\n\n##### Parameters\n\n-   `type` **(`\"click\"`)** \n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](fitCameraToModel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.sceneId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Default to the latest scene (optional, default `'latest'`)\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in global space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in global space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in global space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in global space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](disableKeyboardNavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](enableKeyboardNavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](fitCameraToBoundingBox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](fitCameraToBoundingBox)\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and it's state\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeIdFromPixel\n\nRaycasting for nodes\n\n##### Parameters\n\n-   `camera` **THREE.Camera** \\-- The camera to project from\n-   `renderer` **THREE.WebGLRenderer** \\-- A renderer. The raycaster will render an image to memory for efficiency.\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **([number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number) | null)** \\-- If there was a hit then returns the node id\n\n#### getNodeColor\n\n-   **See: [setNodeColor](setNodeColor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), a: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](getNodeColor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n-   `a` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The alpha value (0-255) (optional, default `255`)\n\n#### selectNode\n\n-   **See: [deselectNode](deselectNode)**\n-   **See: [deselectAllNodes](deselectAllNodes)**\n\nMark a node as selected\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](selectNode)**\n-   **See: [deselectAllNodes](deselectAllNodes)**\n\nMark a node as deselected\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n### AssetMapping\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\--\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\--\n\n### getAssetInfoFromNodeId\n\nGet the assets associated with a given node.\n\n#### Parameters\n\n-   `projectName` **strigng** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **any** \\-- The ID of the 3D model\n-   `revisionId` **any** \\-- The ID of the 3D model revision\n-   `nodeId` **any** \\-- The ID of the node to get the associated assets of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[AssetMapping](#assetmapping)>>** \n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.sceneId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Default to the latest scene (optional, default `'latest'`)\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Development Usage\n\n### How to build\n\n-   Install `yarn` (`npm install -g yarn`).\n-   Run `yarn` to install packages.\n-   Run `yarn run start` and go to `http://localhost:3000` where the [index.html](index.html) file is hosted.\n\nCheck out `scripts` in [package.json](package.json) for more commands.\n\n### How to publish\n\n-   Run `yarn publish`, make sure you have bumped the version first!\n\n### Update protobuf schema\n\n-   Run `yarn run pbjs -t json -o src/proto/web_scene.json {path to web_scene.proto}`\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"4d247f73c315e5f02f83a15e05dadf6931ad6100","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.2.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.10.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.0.0-rc4_1536569880163_0.35022597942525824","host":"s3://npm-registry-packages"}},"2.2.5":{"name":"@cognite/3d-viewer","version":"2.2.5","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.2.5","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"5f29ea477af1ac39d075992cf21031f095a9d55f","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.2.5.tgz","fileCount":3,"integrity":"sha512-cFKoiTb/h83b+GMfAKVTIIqPa3aOOPixRAt2M/dZYzTcA/sZVvX8jV3InWzeDJYQLWnNmVsFGDVjocmQgH587Q==","signatures":[{"sig":"MEQCIEXt2Y+JErYL9qNkGXcXSVG1qkpwgJpBw75GNSfS6RgqAiA8lo5RRCfCK3QvSTurHJfuQYTZj0bwTWSXlkf9b79h/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":949162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblm+FCRA9TVsSAnZWagAA13sQAIKQBn1Zxost2J71AoJY\ntyMLZ0EHZtpbUYkLDDZx3oE29ZJMb+jRV38z8BQykfI/+gp+sB9U+r/Vhj0F\ncsxsMDocj2BV2BGA9Yok7Sieo4iIUwTR7Ej8BZYTo25reffHRsWzVHkjj4yA\nC1atO8QFszFRJoujdx+LOehNZYUa2dJE/op6IiGBrAfS+ToV7WVlvSKIc54Y\nf7FONf8e8YNtkQ9jfUKiOfjhZFKpGzSw0ESS+bA/TSMWxWBYmDgoWlUxvpOQ\nGgoRuI0lf0yZ1i0rz40JSjoYGu62czooJGsxpnopOv06FuOnCAlgdtbPcLR0\n/b+zsPIAmGI325FmeDhGEajAAnnR3XEep6kE5GRk3brnTunKNRWqi5mf1I4Z\nYZ2wd/FzjucaRd+RDHRgAYMojbM0EztSjEcu7mZ+JU00Vydq79xDS9CRCw0u\n63lbLHql1g/L3nXtov5wJLsJoOY/WwIcETr5L4wDHfvq9T0zRNvoHZGO0z50\nW3Kt3Bp0MmZF3IYFNUcKfLiAHHMTzNMn1sD6yH6gV73qwQPHi/BGh0Tz2R4F\n4Y/Eh1Xu89IgbBLPUMOFJfkZon4sL8PWJJ9UoesjkDDesTTzjwVmBP7/MQ82\nFXA9ifTzsKako8F9pNLmRaGpBrOXOKK8VXBNVg42FVFQ3QCJm3i1FwVDoLUE\nWg5C\r\n=iiBc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"ffb2c51f25a79223aeb5de2c325299d76c48bc0d","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme src/** --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.2.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.2.5_1536585604669_0.6752831128828105","host":"s3://npm-registry-packages"}},"2.2.6":{"name":"@cognite/3d-viewer","version":"2.2.6","license":"UNLICENSED","_id":"@cognite/3d-viewer@2.2.6","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"a5924151ce619dc39c5f78b5a7dcf792a445dc59","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-2.2.6.tgz","fileCount":3,"integrity":"sha512-PJ+w3dRo0IJfjimPHO+6I9QquLfXNQpbhUHxf7jsraH2yvI2UUrgOyVXOHiq7KSUUjLH1xFYELjC1C6G6gyJQg==","signatures":[{"sig":"MEYCIQDJrSAwTMS0DA67OsAedRkgCfPRI4SsVBkzgxvthX4TJwIhAP8eb0A9PSKorkJy7FiM+PTx18waaT+w+XR5NyLwg2Nj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":949265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmmL7CRA9TVsSAnZWagAAafUQAIWzMCmmyFYIut8OK8h9\nMBXdoedQUFbIaZIvjvd72dZUOHRtQ0nKqK19jfzL9LOaknpQ02b6d6dVWIfa\n9ZOYFq+6cLqJ7eDGhNDiIyba1EKFAniGxPD3zp2mzTYw30ChBeNrb+d4XYHT\nAsf+UPBnDvqhX6D+/enEYH1EkqfKqlhy5eEBnDglUZaA9TsUJLFqtXHWKHJi\nR7+B1muGCgwVLT6BT1tz0cDVCwNjx7LXJp3RKNRduDezDBzacIOeVMh/QrIV\nGT54gWMwerJQAu8VWZF7fr1sp/YzZ49khYV9nHJMiHH78TG3oh57d3Lm341L\nyJzJFHmvRzS0G/BBV5WAf2x8VAhCO4ZX8dLUQvS6A+U13SnQiU/9r1XI7v1h\nWzY/GLLxpUj6uGYHNvbMpnxr1EezRCB6va87n52WHCJy7b8DM/CKkuZ6uTJ4\nv5nqyZ2J0Wh2eDl8Cjj19oW7YAYGt8zkcJslbG+i4cfLmpHdkrBgd2F/o/10\n3rABHbLhluSq/wxJukG6PbIkmsN/o/4fpe0zZdGAr5/zdPfd9sClHWoR1rj5\nWkkn8uQ7Btjo8+vQrsqci1R/SCzTsebEir1hjdmtrz6d+Bh2EN/NHwnnvNnl\nECmkY8HbeM+xawErLcZnB+R6lix5F+dtCdDGF0Meb5lkl4pfAjd4xCLYbpjI\ngoI3\r\n=N/JO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"60b85281abdc610412e6a9f2a6457e45a1c6f14c","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme src/** --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.2.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_2.2.6_1536844538391_0.5593109052833141","host":"s3://npm-registry-packages"}},"3.0.0-rc5":{"name":"@cognite/3d-viewer","version":"3.0.0-rc5","license":"UNLICENSED","_id":"@cognite/3d-viewer@3.0.0-rc5","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"a58a194dc594c814abf151441a2022c0abf34adf","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.0.0-rc5.tgz","fileCount":3,"integrity":"sha512-KCxG7vEnAkCqkPSbIPaH9MokIFYkREviqfh8TMGEtiqb+gtPqW1B5B+CaGObtL64OJ8owKzVCGYLsiQbWp+pbw==","signatures":[{"sig":"MEUCIAxhWhLYDslMr2YLFvXbz21p9xxq1NaCPpHFJtmjBpryAiEAx4S5y4RfNRbXzEqzVS1syVcRYGPU20Z8JBEdLymlx1I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":969417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbmmoyCRA9TVsSAnZWagAAUuYP/RQ2Pk01niQecayPVwH+\n/53vb1HPJI1ojt3ao2aKMOQyXIRF3yUfpJ81jd6wLnja0JGjtJR+gw9SyTMZ\nu7T+FmrZZX82R8lg2dEIfn7zngvGIfh95mhXtmVIyvgmCiQTTT8q+LgRWDK3\nTYzVsOW5iRsEr9/pQSETjwE/HeT3O3FstHCTTGB+795YdXfrkii1Zmwh+OVg\nspI9+/Y4vocANKNZvYxPgoVZBygAh80s5WH5DskbH2yFL8LiUE6zp83TWYQ1\njqmyT12IHDY+Gz7CXV7i2rnEk+4hiS9HtAmb9ADsHfrktnwYFoLrK4fCFxVT\nGsoOhUaY1ZvJdGJ4ErXXmbeCb2My6VZKZlwjsPfbYfc7Be8+UIyeBbtqAXlr\n2V4nzxmHXwB5UvAKyRsZrQYEWj0NTUUylvnN8urZw6j5y6QPXtbbQe1VGg6T\n2FZ7n0ZJIc3rQfB+V70nXwzg5Evve5Pd7pZq2cW1z40VX+AvLAGhHOltQZcB\ncPcUR9jqmin92QrTXqq8OlMeCij2h2xmIkbsksEUTCOz62yf1Tgb24lWE2bI\nY/BkPVs4AMt/ms+Zxnv12Vvp2WOoKD1nh1cpDJi59sGnviEuho2snZCIlT8Y\nr3uX5vgPsjooRLNltg0x2VaPQGln2TtNAeTxAbmHzajEYxxj/2Sh17DX2QfH\nCIlE\r\n=HLAX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","readme":"# Cognite's 3D Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n#### Table of Contents\n\n-   [Install](#install)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Development Usage](#development-usage)\n    -   [How to build](#how-to-build)\n    -   [How to publish](#how-to-publish)\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Usage\n\n### With import\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\nconst viewer = new Cognite3DViewer();\n```\n\n### With script tag\n\n```html\n<script src=\"{path to this folder}/lib/cognite.bundle.js\"></script> // Now you have 'cognite' as a global object\n<script>\n  var viewer = new cognite.Cognite3DViewer();\n</script>\n```\n\n### Sample code\n\n```js\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// start rendering\nviewer.start();\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case\n>\n> ```css\n> canvas {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the model clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const nodeId = model.getNodeIdFromPixel(viewer.camera, viewer.renderer, offsetX, offsetY);\n  if (nodeId != null) {\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [start](#start)\n        -   [Examples](#examples-2)\n    -   [stop](#stop)\n        -   [Examples](#examples-3)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-4)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-5)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-6)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-7)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-8)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-9)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-10)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-6)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-7)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-8)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-11)\n    -   [getNodeIdFromPixel](#getnodeidfrompixel)\n        -   [Parameters](#parameters-10)\n        -   [Examples](#examples-12)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-11)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-12)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-13)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-14)\n    -   [deselectAllNodes](#deselectallnodes)\n-   [AssetMapping](#assetmapping)\n    -   [Properties](#properties)\n-   [getAssetInfoFromNodeId](#getassetinfofromnodeid)\n    -   [Parameters](#parameters-15)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-13)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### start\n\nStart viewer, or resume after calling [stop](https://developer.mozilla.org/docs/Web/API/Window/stop)().\n\n##### Examples\n\n```javascript\nviewer.start();\n```\n\n#### stop\n\nStop the viewer. When stopped, the viewer will not do work, but it's state will be kept so it can\nrestart immediately after [start](start)() is called.\n\n##### Examples\n\n```javascript\nviewer.stop();\n```\n\n#### on\n\n-   **See: [off](off)**\n\nAdd event listener to the viewer\ncall [off](off) to remove an event listener\n\n##### Parameters\n\n-   `type` **`\"click\"`** \n-   `func` **function (event:MouseEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n#### off\n\n-   **See: [on](on)**\n\nRemove event listener from the viewer\ncall [on](on) to add an event listener\n\n##### Parameters\n\n-   `type` **(`\"click\"`)** \n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](fitCameraToModel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.sceneId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Default to the latest scene (optional, default `'latest'`)\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in global space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in global space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in global space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in global space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](disableKeyboardNavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](enableKeyboardNavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](fitCameraToBoundingBox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](fitCameraToBoundingBox)\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and it's state\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeIdFromPixel\n\nRaycasting for nodes\n\n##### Parameters\n\n-   `camera` **THREE.Camera** \\-- The camera to project from\n-   `renderer` **THREE.WebGLRenderer** \\-- A renderer. The raycaster will render an image to memory for efficiency.\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **([number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number) | null)** \\-- If there was a hit then returns the node id\n\n#### getNodeColor\n\n-   **See: [setNodeColor](setNodeColor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), a: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](getNodeColor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n-   `a` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The alpha value (0-255) (optional, default `255`)\n\n#### selectNode\n\n-   **See: [deselectNode](deselectNode)**\n-   **See: [deselectAllNodes](deselectAllNodes)**\n\nMark a node as selected\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](selectNode)**\n-   **See: [deselectAllNodes](deselectAllNodes)**\n\nMark a node as deselected\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n### AssetMapping\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\--\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\--\n\n### getAssetInfoFromNodeId\n\nGet the assets associated with a given node.\n\n#### Parameters\n\n-   `projectName` **strigng** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **any** \\-- The ID of the 3D model\n-   `revisionId` **any** \\-- The ID of the 3D model revision\n-   `nodeId` **any** \\-- The ID of the node to get the associated assets of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)&lt;[AssetMapping](#assetmapping)>>** \n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.sceneId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Default to the latest scene (optional, default `'latest'`)\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Development Usage\n\n### How to build\n\n-   Install `yarn` (`npm install -g yarn`).\n-   Run `yarn` to install packages.\n-   Run `yarn run start` and go to `http://localhost:3000` where the [index.html](index.html) file is hosted.\n\nCheck out `scripts` in [package.json](package.json) for more commands.\n\n### How to publish\n\n-   Run `yarn publish`, make sure you have bumped the version first!\n\n### Update protobuf schema\n\n-   Run `yarn run pbjs -t json -o src/proto/web_scene.json {path to web_scene.proto}`\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"ffebed527d117a0eea39021a79520544ad733cd6","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.2.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.10.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.0.0-rc5_1536846385820_0.37018198235304633","host":"s3://npm-registry-packages"}},"3.0.0-rc1.snapshot1":{"name":"@cognite/3d-viewer","version":"3.0.0-rc1.snapshot1","license":"UNLICENSED","_id":"@cognite/3d-viewer@3.0.0-rc1.snapshot1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"0a548a79878cde5b95f57e885e743b7163d6b5c8","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.0.0-rc1.snapshot1.tgz","fileCount":3,"integrity":"sha512-w/Ln2YnB9q9AhAQEqpr9x3Bbo8u9Ey5pMydyLoa2FkzPzLA9MU44F037TQSSfSwjXPg1j2bTNISO35nERVbv8g==","signatures":[{"sig":"MEUCIQCHsHMpYGKfpY9+veBI/dSuLHRULccaIphe/Gdzqy+T1wIgVWj2EZay9ak8xezrPjOGNHaBHryLybzJHY+qfiBZEL8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":969452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbm67sCRA9TVsSAnZWagAAD7gP/iuitxtot7q6wJyMbusj\nqgvPBM4U1D6c6bhFutjRXE+ruCr98Y6RZS327pKXsFjIb/MJawbSWOdUSAGv\nrw3mEdCdslXqUrOrSgEyiCLyL47QU1aB1vtHdRePEkhdQXqkth7ohUZjkdCD\n/pizjJoNAX2sd8txOY7y4otV+vPJsHOfrC0x037tBWB7iyKQMGPs43D0Oe9I\nmwbcfZ0nYMpaAxDfUFA1uOCkzknNuS/W80TP6NbPsD+2t+tQiks1Osh4fcLD\nzVfkALQ9TUOuJYCUMk+1ak7Sf0PtBUYQNWS35hL0yQeB6T5Cd2MGsq6+OIAi\nVpTmcyXgjF3/kJh/5P0HJoOauAT2GGAU+5Rwi5oaPPnWc2PjLSjQauNYJ+jm\nZ4OAo5FZPED+P1SUbsuxpH2cOGEAlg56NIWn6LS1fpAq8pVJcqXkxSDd1G8U\nZCuyb0t8QR0B2G2dQdmgLjrb3F0Ivh3wBi8NZ6DSs+GADzehMUtnoCWr0NiA\nFAMi3FiRhhh2TxseWPEz/ByErk4csAS08Fre/Ekej8Pug4WtrT76iho26mep\n+hD/fdeAEoQpuEKQx4ePM7OAby+ONmPG8dvpmezW/eESv5TKLMfgfIMjkcI1\nIHjuSWgwAcDog4xoHFLHtdhziLfkSd0uky9PZE43Cg3rbWZb61xxMQBMnIZk\nNs40\r\n=ju/u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"ebba9347bb28d6fd3cc012ec31044ad66291c339","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"frxstrem","email":"frx.apps@gmail.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.2.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.10.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.0.0-rc1.snapshot1_1536929516050_0.45080624316048623","host":"s3://npm-registry-packages"}},"3.0.0-rc6":{"name":"@cognite/3d-viewer","version":"3.0.0-rc6","license":"UNLICENSED","_id":"@cognite/3d-viewer@3.0.0-rc6","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"3e4cda9d18b837c677c1634638a952f83aa0507d","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.0.0-rc6.tgz","fileCount":3,"integrity":"sha512-DbZRCa99qc5dzsUX+2MTwOhHlkXHf9ijYIvlF0bCvKGqD1vO4yibe3NDMNaIt/gFV8AgUBT2WVQoyyme8Cwqiw==","signatures":[{"sig":"MEUCIEmvT8vP/lqjySDNSjGgTzmwJQEE5BNb6X3Z6jhmkmkBAiEAu9jBqxyOYHQYiZu1u2ZhbkqXm46dF0v812CNHDL4CH4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":971576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbn7ikCRA9TVsSAnZWagAA1eIP/iNhHvgDhu03pZ50Zo9w\n3u9fqnOrAqp7IfyCBZ5j31vw1vCVbg0zlR60KfJlQ8FQuWH3Ycz8tjNWIRmC\nApx1p4yBh7oEMMTd0ZmMBZvfd++iXZNdI2NunMrU4EsSPYgWDoRcCdQbBOBq\nX1QE95IQWEcN0LBAZcoU1bLW9TAdUgsXjhnmEJYExYMlhaRtEe9mqeY2XIV+\nSC17LDW1DgzccS7s+zOI7nQpwnH7ZkR8S6b+QYQCZYA6R5iJX3iCpcho/ZkH\nu6+8cnJWFGbsRpyl0n+LHEiolX+0mBHr5hG5gV3u0BzzWhQeUZDSSvssVLSF\nL4V5xr62k6SwxWYsWEMn2pV0uZ0eZwz/nHZG/hQqxoG/fyTfHc+qArFHFY9V\nbQ1+d7K1vc/yOfgKJBxKPzQFuWEC2jXBh1Hfg6pU237FPcdcLgYHUdNjOonl\nndMKoHuoPbPRQrdMU1N8qYTXMEttqzTlTTDUhmTLPA2Ef/AiQQe/EwS0n/lE\nU689j1dSEs9YsxmeqpNQKVt8uPQmUgCJgg8zHpbu7Y1K8jUZKAccpBnaISIQ\n5bL5UhObdRKnOYDVdaHxFpf5PZ0PhifPrfew64lWkIT4jDqQlflBCpx2ppA5\nUnvEQxfzNDtW/sFYID4+0y7bD4/qcf0DLVX7ceogqOWdd2lzxJqL/RiIjiJL\nq6m2\r\n=Ynje\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"a33a6e7d245a2a1cf415ccba5d715a551d872845","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"8.11.3","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.10.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.0.0-rc6_1537194147547_0.09545301584723331","host":"s3://npm-registry-packages"}},"3.0.0-rc7":{"name":"@cognite/3d-viewer","version":"3.0.0-rc7","license":"UNLICENSED","_id":"@cognite/3d-viewer@3.0.0-rc7","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"10d2ab34383e8f23f802a572b68849b25b0aa3f4","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.0.0-rc7.tgz","fileCount":3,"integrity":"sha512-FTpoSGOYdJeLLLn9TeoNfThpgZqnJHSF29GlPURr0yxR93f8XQ4l/fRKM+wyyMqJGLodFvkg0hqH67gF98+i6A==","signatures":[{"sig":"MEQCICpuZ2/MaYwH+weDju7SmqU1abZ/BBbeHbcqmKPWsemGAiBamRMkh6eQjsp+cxx5Ia+7znX1zEzMtYBFi6OjtdrN7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":972233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbn9ZyCRA9TVsSAnZWagAAdKsP/irbXBYLCg0EZnZTbY0A\nNXrvauZu1oG8CghEwSBaZl8/2amq/9wnaL8plnD8Hydzl7Cv7PIOh06mK2Pf\nJcscRx+29TJBlYOgL/fBEELjKEpeNjrIIqmLzcmGlIhb4U83eZJq5FOk21jK\ncNVCdJFX4YeEsuKLiinFTe+ksJfzEcU+kj4eHhvcT/k2kLtIey4A+JwkrcYW\nu0H2IuWl/bvKeGsuYetIlHD7OfXAL58CWO8ZLf606PdoXNT556tD8J0KG3J0\nsBJMOkQGK4udQiBD94B8BflCKxwxH93oaMlWiC358A0GI+kZlODGfILrQb2J\nXWDV4jo0FpHi7wTbbsnAV6xhFKXT55Ya0B8fD6Z7L7Ege0ehfSKs1t11R/uN\n1b1MlhRkRzQ4g9w/XIg6MjHV+0H8LkJudPA0A/fyhQxoy8PnQFrRuCEJREJb\ndcPvSLUJ9mP1lNBeOx327hd+N8PzZpGiq75Eu/w/8nYecbZOs0hInaWt2LCM\n/eUws7lbk0zKj43cN0EGYyHDfe9E3YTGtRVjqxdAOsNvSQVCoihzPCtrFvbi\nRu3bT28p4SlWzvSrIG7f+OMfPNYztzzaVKGpFFMDS4/Nxf77AfBLfe/JjvDS\n1ah5RykfSwAP5UQAzIounkmAhemXFpwJv8aw6dyMY4tdV5vgRNRzWesJmK1Z\n/R7E\r\n=JAjp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"9c027ba30871ae70667499e6f93dcad34c52b13c","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"8.11.3","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.10.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.0.0-rc7_1537201777807_0.025465553229378823","host":"s3://npm-registry-packages"}},"3.0.0-rc8":{"name":"@cognite/3d-viewer","version":"3.0.0-rc8","license":"UNLICENSED","_id":"@cognite/3d-viewer@3.0.0-rc8","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"814c58fbb54db4ef620c2a41ad519d45be4dea7c","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.0.0-rc8.tgz","fileCount":3,"integrity":"sha512-kV1UATd/Th7YKwsGdALsFZ5F+Iu+u1v/r0V2ocCRwZ9SiU4if7/gRHEAcjT7v2szpggBkEj5njK7/f/2J6m3Lw==","signatures":[{"sig":"MEYCIQCsz7iH2buxC/AcTCCnzIjNewOyMp5qqy16OWkz4Sb0+gIhAI0SOLb7pidaMLwZW3Evf7K7x4SbkvVWqByPI0TF7OJx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":973913,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbohGBCRA9TVsSAnZWagAAEA0QAKAwab2PsSqq9PG+80I8\neQGrcVQEq17/i8//2gZSvUBZZuUx08vc6LfgQ41UZWacJqJqJQclZEYuNuOK\n35BlTzQ0EXe7iimdiyANtp1PzKDcUXlBFzpaNegnVXYVu14C7U4V7uMhxuzZ\nvLcm6B0JCp/MWi1m9OAEtDbY8xQf2mWCNuXChF3dK5nontOuIo6DyqFiKXRR\n5i92+h5QuOCrybdX6TJHOTve/mOOcO0C2KtXcLET5CJE3wnDDxVZEqXfH/Xk\nEicvny5wzqeBaA58ZAxf4DHky2CioBvwUGjq1YwrWmFB5Glu+BEY1+/bf8gf\nO46qOPreGUa51iaEzFWV51NLTsMEF4z0OKUSQ+k1T7aLWCnEdbyk0mFXTlUK\ncs4dr8e+Ngn/Ib7n0zx4ao9TLQGPch/iK+JijQk/Qagc3OLYxBeFHZq7JzFn\nCxsZW1Nv2PR2rts5pNpIg3SWSNawIhSd164uXuuvr5pC1FgOGzsJaAm7u/0M\nb+4AveefTVXhAdNjbicaGsvpPVe3sntikBsNzsk4wgN69G5ZW5UokdP+ItaO\nvShcainrRhJVK+x7Stg2PdFLbugGrzP57PacAgwB0WBfZql2A6d8WWCTLOeN\nIvW/hq+iVqhsBHylfuhXaZQdpKUj/BPjRXuW5Im+xAAcoMycvgCqFVW0qTHe\nBmvb\r\n=C8eC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"a2e8db482227b3edd940e2b81954c231335464a1","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","exportModule":"./exportExternalModule.sh","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"8.11.3","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.10.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.0.0-rc8_1537347968300_0.2880529728149577","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@cognite/3d-viewer","version":"3.0.0","license":"Apache-2.0","_id":"@cognite/3d-viewer@3.0.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"af46d37a1566fcb3c9e4459b21cb9942ed4c0353","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.0.0.tgz","fileCount":3,"integrity":"sha512-z6eGOuXd3LZJybnmzhOjI1WYOj/NwVLmHdAKQTdZ6R48CffwFZFlp3KR+zYD9ayO7lpETRBXuSk0tZKsY4UtAw==","signatures":[{"sig":"MEYCIQCbAvxfL5g9JpnPTQMAmp6SUebVZR7G93UpJ4PaW20WsAIhAOjnea2wOBQPtPoX59I4zkcJjPOBqCo83+XRoj/hifhW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":985039,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbrkBlCRA9TVsSAnZWagAA5oIP/0WmsvS7eHRqxRVala5M\nmUlP70wwVZdQbs9CE9gacVrsdgX0JsUSHP/kHwoEDrZBgpVamK366nHrQXIl\nSN9+11Cv6ZzmZOd+fX4+NYsU3EvnDM3w7TnUSqN4dLBYLNUWYNU3NEf3Oar3\nCNx2guqgrK0OcRVxxR/HJjjigh3T2YBVOM1NeC2zbEahU17KRYs44UPMiL/w\n12LqQEGjiqj1WtC7GMevq1TDM++FkpY64D2oE6bI4IgrofjgcxjPMs+b1t6c\nAYCz/2F+ycisSH3pZffYk2cI7Uak+sv0jfF5T7abdlGeWPFfHiTM6puFx6pz\nnvaaMJS/c71TAUh+OFone9+xYb8ne81USVlgbkG6I3x3Tamm7/KCjB4CRT83\nPWm+BFcZIQYjF+S9eGdUhc2ewQJR0dwJpgktiAjg7a295oTffXxbxdF+2cy2\nRNlLdEC5WbvXlmZcz4Dpm+NqRHbUC3Vnmx06jwwTWcN9IG0DQm5grZbECrBZ\nrDjLbO1DWEoBqDR0AZAMwrSwuAsIzr6eTn0Ou5RFeizoZELmemyxcRhQ6Jsk\niP7cKiLFy6ZQqPOCsI9MK4AP4MLkN25DYYXWY5BnLtYJuscHCycZITMcAYfM\n9oLi2DD6AMqYrEnT5Vlx3Sobw+bdNL2AtjRegp8o/cwXYFDJugIzmuJOjsbI\nFWum\r\n=k+kq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"9696382e4cece9a823aed2bcd3ea01ea1982a452","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.11.0","dependencies":{"clamp":"^1.0.1","three":"^0.90.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.10.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.1","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.0.0_1538146404108_0.9724883771659778","host":"s3://npm-registry-packages"}},"3.1.1":{"name":"@cognite/3d-viewer","version":"3.1.1","license":"Apache-2.0","_id":"@cognite/3d-viewer@3.1.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"d8519045a92f7e556170436e26f23a5ccc3df100","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.1.1.tgz","fileCount":3,"integrity":"sha512-5JOu80aYBvSQaPfMTRjT9C/DT0POOlrfjsMjIc3GBVG1OIIUedXYXOxJQvvrwFC6pqmAERxLXOY1r5osGh6oRw==","signatures":[{"sig":"MEUCIQDR3kky4ekjC1TX+raf6mjTxhZOdv3wOaF6mIlCobfjZQIgEMQ4foZUJ2B9rzx2iQvn29EMOr5HGmZ8tNGdnO53Lzw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1035500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbu7LyCRA9TVsSAnZWagAAftYP/31PgpOmkQCX2+Q8+OxK\nSyxg/3cnO9dVjdK9HQyXJoDJEqF7Km+U94J5h1dtr1D1eumnxS4T3uA6rQUB\n3sFMz+dPJrQUi5UWdQXJyBZ0hRHxCBHxU9m9YNSD6MByw4INdYsEgMRAubTm\nA9fcUVDos746DQFAmkSl02Ua6H8mBVewTf+GFTKQRofPkrIA8Mvs0Tl/wqwD\nmL67MMD6UU9tmfFOcbQZaOBssvBp3sjxBU2Hy6rUihtwacO9/xRnpay4N2o1\nbIUn6GffRwQd9N5W0NZpGtAl+yCw9czgwQZsb2Km8HvrYeVNwAMXRgvHU3B5\nSY/caGWoatKzJsTWh+o9RFzDaB1+885XLkNk2kL6MvN4zz5Gp9u5d3aDVBHX\nhqUWHLLDOIOWBUb13VO6bvmEkk4FeNYAZS7MAc1IDVwM+8OpWR1zZxyxKvdH\nlUNCS+NJuzxhmoYyosNKyNkvFcEtb8Us+o6bZ4OmwKRWglR8+T8MnZgDEszC\ntlA/BpdwuEGZJ6pM2Srd2VsL/E+rx5xFc9CixQiC6Qnc8zXnQHrPLzApTOY7\nnMGF/Zjv/7omGFe7u9pvk0bgo/FFqRCZCqoEewqpObk004Pq75nDA9df7Fez\ngpPA1OvMs0mHde7rlVTwbGOXDMUBZXLN/8wYaj5UevbLY3dS31pTaDIz6YGK\nubCI\r\n=bGR5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"863f31cedf9f56638fa54b360759bf2713b0ef6d","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.11.0","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.12.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.2","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.3.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.1.1_1539027697928_0.8353772379468956","host":"s3://npm-registry-packages"}},"3.2.0":{"name":"@cognite/3d-viewer","version":"3.2.0","license":"Apache-2.0","_id":"@cognite/3d-viewer@3.2.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"15b0c9ab0520339f2843bb875124cdcf03dd0f5b","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.2.0.tgz","fileCount":3,"integrity":"sha512-GAjy1/oi1DFgvBv7eKuRMv+APv+p8KmrNBqqvJnvqBNMYtGvWtjydhyLHm/JNBpJDgQTOgVFDs0Em34l2q6mCg==","signatures":[{"sig":"MEUCIAEFdc9I6G+pwFth9RlQjtg6Jr/ezGTwDVem7BQGHWxuAiEA/g1NEw47uMDMQNSMKRhsqnNv1WFXuXiy+8rZGmpgpWg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1038417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbwzMECRA9TVsSAnZWagAAKogQAJ2A9TtO+6eacv5GMdkv\n6krKdavTCEawtSXrZwSq2M8pLk94nlhl21ayDWFu0fjTmXwYDj5cbW8HvkSj\nIQeo3UyvkixFb7uQPa+eWBJ2iEMWNhSC2K5521u7MKwLx9XBcHgz634d99QY\nPW+aLEWJoyFE1Ifw2f3iyLOBdHFY7+lqdqisQP/695D87Z0aPZFSnXkSIx6M\nnZidyiNwDjZx8SMqnByW7o595A8NdyFXA56rsMdaKIVRuqNriL25xKe0GzWy\nV/TCZN4TY2xhnc8lfAY2V1YtNpGjGaQbL8aqllCKbSMR1eZ8xvvDKDSIEyao\naA6qsg8906Ult98rPXVWI8jCN5KMejtHkBUYoavIjTrjWCLC65FsK/1JjReN\nFyTAY382+nZ8VCNJdOGrckiPz6Uvp4/Iuc5P2+Ci3bwAUaphVWumLGuJXOBM\nWuh3z2MLHIP1JVQOJJmckeYLDWIk5gUp5wM3s7oY6mgCQg+7t6NB3zUhUzgV\nU86vpxawEt57Z7i589JYLTvyVODMefSBXNkTTNOuhazNyrk41bmWKzAoBFCZ\nAWuVuvEHsD/BB/p7cjkVf8O8aHrJ1n9RNB74bieidJEZeLCldC63OGk9Vzcf\nho5/PsDQQpx21sd/hxZxHbUYC2xE8F4rW12G4O2d/0Ck3yWx0rxTF3BLej3B\niXz3\r\n=mW7C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"6b101e02605fbcd4d438eefc4bda8f1c72d0bd6a","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.11.0","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.12.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.2","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.3.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.2.0_1539519235931_0.8935184227336834","host":"s3://npm-registry-packages"}},"3.2.1":{"name":"@cognite/3d-viewer","version":"3.2.1","license":"Apache-2.0","_id":"@cognite/3d-viewer@3.2.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"e93acaf4fa98fe5648c4ff16823d2f93f2355f20","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.2.1.tgz","fileCount":3,"integrity":"sha512-m4rHV8PixEpBu2YOpqTCIR1Zf+VHSu9cveneEtwRsUK3Fx2bHTSTVIkM0LWbRq4OLX3Z2c/bB3uIGDKmiH2wpg==","signatures":[{"sig":"MEQCIGjC5ckcp+m0WWrISvKAnim4RqRIRPP1OkPJehaJFHsIAiA8eTB//vqd0rliNfBYPuV1QJmyJ5o2kY9N0Jua5jNGjg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1038685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxDQ+CRA9TVsSAnZWagAAq+4P/iSaJ9GvAqicJ8xqiYZv\nuA90YBdBd76PP2RplJjOVUq0EQjGZFmDeEIflpm1Hv0DTFtbX+qF5ng2ndj7\nT1HCpuN7a0Fy9FGyfpbD5254cwCiNv7QN9pBHhsuqNLG4n0IIoUjBxbTrbrV\nJELmcv0ngJ1vvGSqd8cVIkmb+IXrn0b2XrWe+yVbmuknvZEK/UKZbS9y+zJQ\nexcRDB6m5GlPP+UGhvsQAa/ZNeP5x/QdvFyPB6ZC32dcdzThQUT+hcktBdxd\njNLvyfRfA6G9Jn7nF+qNozvyjhY8/YpVxJcNJZPn8BqIt00dZtnmUtlu0NQg\ncBqN1Y4OdacNC74Hyys9SfkaVA3YIE+CoRTLFAA+TwkhrZkEXL7wGRrzSw6P\n0ctJbG3A0wEI5R1IcI3118BLbkH2sbQHDsTShyzsmT+z4mRTYDup9/wavJjl\n9rvAaNcF698ReUsboZhVuQ1wCpoOf9SeVdyckHiLAPNuevXjTY5Gl6zcr/pJ\nu994k2CegubYTIQpNYFrMxD72ssoAqlgT4ZJsOxAH+tosHGSrshfRYC+YcS+\ndwecokDReF6yEZzd7VEfqo91SwVKKbeJT7E2c4+K6TLyTqCxmV1mJiYNGRLT\nOZ+1jy85zwdrbbwXyCS7l4NptbvGRfi7d0RUmbl4ctyj5TnsBUIOjVdbqpuj\n71mx\r\n=laoe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"15f893aee914de99a90f3ca94226d157d69b7a7f","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).","directories":{},"_nodeVersion":"10.11.0","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.12.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.2","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.4.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.2.1_1539585085281_0.8636394314695095","host":"s3://npm-registry-packages"}},"3.2.2":{"name":"@cognite/3d-viewer","version":"3.2.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.2.2","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"33f34d41373cfe49de76060e54b1888915a9902b","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.2.2.tgz","fileCount":3,"integrity":"sha512-ljTMcuWvistV7RA+PxIo4tcNp03IQPKyD3iFgwSX/XZ/ORrAXxH7APqE4v84b/YoKMZQZ6xGRxxQXlsPOzTDHQ==","signatures":[{"sig":"MEYCIQCNFSLEIahyomzI0KUPRJNkGHF2DmJ2+94OoMnGb5yGcgIhAN6yNxFryTOyoHT0vDbeo2PG1vmcvwJy2HYomHIRsgWL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1042436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbyJ4UCRA9TVsSAnZWagAAoFcP/iAw4z9q6E1qtv1JPHLi\n9JAMv4z8Xj/4VRxj5uA0yvzeSyLhdfmM1WTZHw/nZDaKKNox9HRM3qL8SzXi\nCQIw17HYSkLYpAhn/r2LVYfxEQixFMBo6eo8NNiViw1WqrDWix+9OTfS7iLw\nbmPIHzDGpLoS4WcisLNAyBUrOWNlCBnMNGAWLFF2IAGrjz4KPhtWbJ9/Dlxx\nIdAcVr6wa2ZGnn/GwTDJ1Jo67OjPHML4jFPjJubSa6s7Z63+lSzpjkQFcrn8\nl7A1khtlm2uKgyjdD0dg/M3V2kTsWgbRQz3F5O5siaxm72lZ3e42tK/7nBYf\n4e5fl9ao/DtGuJcnexhS7JqTc5dYT3EpNqH1Nsa9RZEZOxqHA4hOIdSa58Fi\nmwV/ggW4/O13jQU1UgcsdU7M1K/PZkiAfe56nBVvSIVXyktL/lo35+pK3ekz\npgoKQEMJUS1mon7HNrL6ZlgOgVuOVDxdflyNWq10YTqxzqbBNsp+hRlODKO/\nrquv4oA+t66am3X/PBJI+QYERSqol/y4aCNS+fIsp2CrF+auaAvQLmr5ctzO\nPbL1VHEpmeFPDifZImXElzrdDooui5zd3skKq5fsBQKw6hD/x1qf+8m2YtGg\nLyHlOwSW8ezFLQDsziN5JuivyeDLd4iozV0LATpzo8oR81HIBOjATxLkid/p\nCRTl\r\n=flgM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"1036efe28ec7eb104060848a9f087eeb8b9b4c18","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.6.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","octree-helper":"^0.12.0","sleep-promise":"^6.0.0","sparse-octree":"^5.0.2","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.4.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.2.2_1539874323031_0.7109559040221272","host":"s3://npm-registry-packages"}},"3.3.0":{"name":"@cognite/3d-viewer","version":"3.3.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.3.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"8dbf918999fd60a69f6bac70b9785a09dd29b34b","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.3.0.tgz","fileCount":3,"integrity":"sha512-vDeP2iC2DeMj2iVPLQSKlpMcTCizQZFfYMSMCUiNlFxLYN3eWqvpffbbuhFTlVKc980w0yTEbmoQdBWUH5dfdA==","signatures":[{"sig":"MEQCIG9mJWfj9Ar9ZPKn1DSuXG8Ajpj4ZNAlZQoDwAZNvUt6AiBaA2RpwB/Du7qi9OSBOFbArdzvzzpft1U8cNo6I3Jl7g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":977781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2BwiCRA9TVsSAnZWagAAbQQP/1YC/Usxks2fUxmrKEc3\ncAfM+7KKYp4iHSmEBh25Y0Jirpa9z4HfccjlqNd4ra3q2xFDcPOLXpvuAJlm\nrPX1N6MlkWNzSqFkQZfbeylnb+ANW77lxm7+3lkuMWNq2dEoukKYS4ISscyh\nAuX5XaL3AJx/l8uYfWhgyQOIt7etXgnms0mvSLFtw2kqEytcbjxzJwbZhiZN\nO50VLY0BE2RE7OoV6PwdXo7aja5SGjNqVIDgzM7QwXY0VEcfRIgZF+U8Rp4/\n5WEUla1+DtvnGvUDCbWXTNVA5VTFVc9bqx1UTzjxn1d6zE+48Qg5VXMAR9u7\n2hcpblRylDmcw3uIpxEOKHkjYd6zsMu89iAy7qwKH7luCAqXZpIUTGveLf20\nukhLOCU5+Nz3ONlfKpsvqM+kM4+3L3Uz87cZSQd5kcIFvsT9PE7XHWLfQEBZ\nZenRqM0/6zh9RWQmID4MWYFRRPM1ARItBBpsdnYBt/5SntX6RxQsXholwyY0\nBGPHoq6zywnw/09WHizTMDpmiYCEZLRPZUSaSv8ImY9fUyGmBEjQT1KZJALH\nGLfKnqI/4++nZVnxdIAqIyHSEXSlN+SIIurzDjhP1Rr6I+lDw93qNqcJNqjM\nYKeqoqbCbnSNx2tjTuOWItmTv7WsYVhFUtuDEI9mU8Uqv2yzigJWhBNTgs9m\nTcwl\r\n=+5+g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"4efaf41cdc76e11b55076cbe51f4cef327ca9e6c","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.6.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.4.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.3.0_1540889633334_0.11312311115717089","host":"s3://npm-registry-packages"}},"3.3.1":{"name":"@cognite/3d-viewer","version":"3.3.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.3.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"d0316ebe1a531eed037095a09d339eec2b423a1c","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.3.1.tgz","fileCount":4,"integrity":"sha512-Pqs4g23qN41t/YIZPVN9faTcF1et/tGO49rSuB0kPBcd28pXtB6pvbVRuRr2Zv0N5qxCzOmbnq6xozEkBjMVrQ==","signatures":[{"sig":"MEQCIFImQAvxRsksBvcn809hIzSuWa0MEc985YtkN2H13FxAAiAo2nPNBGEc2Oq1GqkbUf1cmbY3uxmKCAKM3lKQqRvG9Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":981079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2B5YCRA9TVsSAnZWagAA77MP/2RAzTNvDaDw4t7IH9/x\nQjwzoV60CjqA/BaLzs1bTsHBiq/qZP2+0SV2/q2JrJJpg3taMCo5GakG49or\nLzrSKSi+AZzjgsEkNMo7rx47BsNGi9qHIelmkKjug5AZ9ZDGqhok4D+rTi5/\n7icsisj7HvXujk20atKaNyWYpqrqCsn+MWX9/tu3kzzJvRbwZKTcgqagosQ3\naB4CSUYdkZwVVVlv5G4nfzzpBdxpZnVsx0Aj9x+xhEmqSA3XvRxm+DOGqXB/\nHHBWJ6o7fXM0ZDg1/iFQRYT3TQA674yhDvWGi+Jf+equwTVBTZjnb8ikoq6B\ndioTxQRpasZDni0M9RS2Nwt0McTd/i5uvYymjVpGdnab8BgDDMOKbLlS4N5x\n9Pyx7Ccf9oXsnlvjdNYV+D5EYW+DxJfJ9xOTxx6pS9Uk12rHdb3Fqy5cikJn\nIQ+/xXuzDzyi5cm9Gp11wyU3cTCPKr5FPNqv2U0YKloL1lNuRp/Mb3PKDSkm\nF76E6fZQin9YGddTOlh+sr8Su9r1hQvXjOHIUHX3A4sfNDk7Qt452/KJuGH4\nebQiPKTlg+GMle+iiXQfwNVbmzbom+YiGSzQPw7+XH5TXFqFUpMrprUiZrNM\n2ILNYgAvEUnD71jjvdBPX+EHctaWqLY5fKqIG994Q78F0UcLtb4MHTCV1mlV\nbSRn\r\n=saYm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"4dc74aa9e69e74bdcc8fdf2c0ef87a32b1ce7883","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.6.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","is-array":"^1.0.1","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.4.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","babel-core":"^6.26.0","babel-eslint":"^8.2.2","babel-loader":"^7.1.2","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.14.1","babel-preset-es2015":"^6.24.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","webpack-glsl-loader":"^1.0.1","babel-preset-stage-1":"^6.24.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","babel-plugin-istanbul":"^4.1.5","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","babel-plugin-transform-runtime":"^6.23.0","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.3.1_1540890200174_0.1327086545885099","host":"s3://npm-registry-packages"}},"3.4.0":{"name":"@cognite/3d-viewer","version":"3.4.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.4.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"ab2c62e6192ae73a251c788d738f56352d7bc946","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.4.0.tgz","fileCount":6,"integrity":"sha512-TSRJbTTZSpb8a3H4BQbm73gbYRF+6o3kWx6DtZXcPcXuHXNls+/ZurQfGn7SCntWBMxNwGBb3L/w1kifu3pU5g==","signatures":[{"sig":"MEYCIQCXpwJj4F2BwTk9b4gkCImzJ2Lw91IpohXmnR5HSbV+jgIhAKB1nHAWwyYj2AWKEIUV1BI+hXNAQ5ytjE9IxVhqBmSL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":914918,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4zNDCRA9TVsSAnZWagAAH0MP/RkX4hVGfE2X/SQeWh5+\nbdG3F868D124ORibVmTJvj/oPo3149kvtxNemE/a/Ug/3iiJNGUpusRf4+ip\nL3Q4xJOYSHT37RV8aKjacbh1S85oMG3tQmue6/5fLcEmR8jNg4OzMjQZ3Z5C\niMkmMx0RvIINy3r9znVHKBLW49GAX/Fh7cJC4annRaxHsfaTUYBS3YGjizAb\npMXSJnR/IviY0hyUIYl8L3kXGJ4hypvzl7u4seQqz4DgupigN1Ae7Xrt0hy0\nO73hdkY1AlAfY6HdioPwoUNYLVLjVudeG9se0JCL7CrIVbLzgFUC2p9HZ4jT\n1sEvPQ+yOObENIbusULmGzIoRIVvqTqTUH4jUEbHC9t5X9WOL9WFXZm+ap8D\nJewJmL8/prhJGmpuC1n0naVNPw6k/01bv7h/gTxnxm4OazQqRFQ/BURqPzqf\nh8Ac/Yy51naYuL8PXl/iJaz8wMNHuUD2RPAaMzagRhlPkAKsgHLw6VgMGGQk\n3Jwo31e2JEUuE8s+kqroXssw6yG2y/9E3UTBSi7Effy8foH/sCN8y7trT0AK\nNxtuovAE2wwhGzF5RxpmGYceDhN/f6qhuMUWx1giGHiwc7FssJmcWkS/Kz4S\n30yB6ZtW/U12L3flt8D4zooc+jSXW2Xihtej9r2ga3NutqCaK0gF3jCtJQRO\no9Z/\r\n=PSUE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"a70adc957835e662559f227f1ccb30c18e188814","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes && yarn run moveChangelog","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","moveChangelog":"cp ./CHANGELOG.md ./dist/","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.6.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.4.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","typescript":"^3.1.6","@types/three":"^0.93.5","babel-eslint":"^10.0.1","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","awesome-typescript-loader":"^5.2.1","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.4.0_1541616450155_0.3252584690860809","host":"s3://npm-registry-packages"}},"3.4.1":{"name":"@cognite/3d-viewer","version":"3.4.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.4.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"239b08271e22b2037056d24a67a040b3fa8d42c2","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.4.1.tgz","fileCount":6,"integrity":"sha512-ucFAXt56+0iH+9wzGfwLSTc7BFhrBkX034Opp6Kt3qNTg1WVhOEPeaLkeRTH+6TkROiFp47ABtyodYAuAXhl0Q==","signatures":[{"sig":"MEUCIQDNQA30WDk6gGqqTsQsTJPAzN+9AjbdTy+jMGfwkxUPXwIgUm6e8cvtnucWXPS8UVCcGYYPvO3EpufSBzWVRCWdahk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":914820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb4zZACRA9TVsSAnZWagAAx3kP/Asc8fXtBRBIdo/tJhfR\no2QwsNdIKYMwsjHIihizUcLD1WF8nuCG7Ce5JmJxjYkihBajDL5KNmobCU7k\n36LTdwyFwuL/GF4Mj6bxD4RTSPcCimHLbGs9vLzIANJutzQBcJYc2E5HdY/d\n1ItSbqckowLEEM9ekKUqycmFWZ8PelWaGnwzvjQgKASbmnoxiAPA0e1e+Yon\nyoPw30mkuOVU5BhADD1U3hjjOvnK+m1n7PZeeISurgBf73Kvl0Zs9UPctf/Q\nL84gRnD374MB9dOXRSpXDzlQWgjud9ONdMr7HhKbl3lktJALw8Oi0ujxEQGT\nJXi3dHBH2iWmRJDUlh7uu4n2ZqWuKVFRI4qfOHe/UfAbG5AHnynJhJDgyzby\nLkZKmzQ0FFHiSVOLBkQ4H4dwqmdEojL2LvssaLs+gEdhDNGSFqDj3mIzM2kN\n/XFBaHpqZvADbE/AQvtGTPxk/Q0PR+YYqwu7446n3sybtDtGnwdPOHQ7flX7\naFHkovAk3yov/97vpxCfBXgsOG8MlKuJz+ytoplPo1hxqrJ9Zx8IS4trVXk8\nf5f2cSVSKVphZMBcr7+mdA647pB0sW3YNHDJfeTQF2cgiu4Gt99EzQSUksVd\n7DS08H7zj+gertV2rPkb6qs/WYrbydXQVqEo7AJAJ5z1tYHJEosILlJsO/do\nmw5N\r\n=JC7i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"54bfd6d5aa40b43665a261f28e6a59ddea780e46","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes && yarn run moveChangelog","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","moveChangelog":"cp ./CHANGELOG.md ./dist/","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.6.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.4.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","typescript":"^3.1.6","@types/three":"^0.93.5","babel-eslint":"^10.0.1","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","awesome-typescript-loader":"^5.2.1","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.4.1_1541617215603_0.7114008962594331","host":"s3://npm-registry-packages"}},"3.5.0":{"name":"@cognite/3d-viewer","version":"3.5.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.5.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"2df279e0342f5bcabac4b3110b776a59b29a9143","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.5.0.tgz","fileCount":6,"integrity":"sha512-pDl60NESHtHOufMvXfqj+L6HWoq8UrA5CS6E0oHUyNdG8FKODIjXc/Bhg+8L26/5JFIKIb/MayaTwoHn3ff9qg==","signatures":[{"sig":"MEUCIQDNECd9kGp9NU3t8zl5+1ZhzBIcsdEAD+M/SsH8T1acjgIgIihBOhzvGJ1ibMdc+SSW1oK2kfvIDOVJ79AZTfbsY2E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":930897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6F+DCRA9TVsSAnZWagAAhB0P/2xCZrdQ+2RKEQ41zQV0\ndLwrapPoZ+oQbmUvnnQJ1fv/PCz3KtqcUCPBbPRLg38u5w9uCYApw3ORKa5p\nqRgV5WONw4LnQL/AKYJeZ7Hb1Oquh7Zxbk/e689nQSVs8aBTxqkfVl3km4iW\nyjCxfhp9WeyuUhH5qGuc5osCLs45sVPpKQWDEiiMtdGgKeW58JcV2z2AwRZA\nhV5qqAaCjobO6iHqlxTqqF1P09/bETROPHoBoH6z2hz4PnArgSHG9QBBYVVb\naMAhps9lCbof/4gzsSSkKfyerrrinqiF9mBkYadQ+SJblYCJOXWVMiF+/RPW\nhx0j289BfGuAOVsQkvwQZtEBR7LW8goF5sbP44WWBtNhb1GPvy7hvihmx2K+\nAZIsuDXgYfKai/fwWUoQ+G0JJ+os+L2YRtb1wvUFvhpFXrVDRM+YkXEcrr7S\negh6gQnB/N3deSYgtPzGW9/7nEykpjg3UQ8eruSzAt0oBjyZ7u6u7L6H7zRs\nHKlh8FtQiH9qAcsbd9jYP0K48DRuGF9G/R4UAiE1yZjJqnxmqdpg25yX9LPi\n9xd8X4j2F0xrYftnDU2Q3liAuhEhM7VYxYQ9UHCFd2jlwdYv966adwTi4xh6\nkFG+fDDEpRP05UABDuPsN4flJ3AO6DxYNd9QG15M2zmTVvnVNfbDpypHAiMJ\n8E3Y\r\n=j3Zo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"6b5d17cb26ac264f5a9589a2d1ed6b0a1875db3b","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes && yarn run moveChangelog","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","moveChangelog":"cp ./CHANGELOG.md ./dist/","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.2.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.4.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","typescript":"^3.1.6","@types/three":"^0.93.5","babel-eslint":"^10.0.1","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","awesome-typescript-loader":"^5.2.1","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.5.0_1541955458457_0.5701972441070766","host":"s3://npm-registry-packages"}},"3.5.1":{"name":"@cognite/3d-viewer","version":"3.5.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.5.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"74d80fd7c4ac46f948cf3d4f6da50f01d6306d27","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.5.1.tgz","fileCount":6,"integrity":"sha512-j8FSt6rHvys+OdBewhuFhKxxSTPE9gluFHEhQdYrBL8P0tlRx9N5bhZ813eTWl762UIuIJmv7r0IsjU+vxql3w==","signatures":[{"sig":"MEUCIQDdW5NkUgtCMbWcE8dJb/HzVyrihypb/uBHBD7vyNdexAIgQSMGYS4kGckcCOL0ASzg0iZsKRLRq35lJmsp1YQLjjw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":930904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6Jt3CRA9TVsSAnZWagAA4DoP/0WeAMugxk1gBmZ6AhYN\nbCa57v1ogMWHkQ+7ayDVXTyXgU5sd5m8oDnOrVTN4XUvCsI7tSlckeP21KNO\nPNnNlMXd/7esBHZp70HflkFr/5GcftFie5B7DdJz6mJvp1jwAi4dU7x7imtu\ninTADa3F1iBr2hwZBhuNbH1BqHUbuwCy2Ul5Qepi5M7oSwQanddm3vUnLsq5\n934bx7spaTmEH49lagurE0ndfA6HzaJhLO84xOQUu/etShiGQ42iHKvSkYH4\ntM6MTT+GFfIVZjFHC2CIA2tUyklaUzXwq/nOa19OtW0k93CrSKanNhCuUz2s\npOpezCiB10QjoiYw5r1PypPvcE8GgYbcbryn5OtCnn8yDgK6fgCdFdyM8hWE\nONGOyYTuq2JfjqmyClfhc2nSry2bT+EgUVgUCYm2Ic6B0AEI9gCeK1FGgQeb\nh9DHNG8lWRZ1qYqk8U5akvhHrKKxzZ6zSMMIa5WG7ZgTIgos9t3pf/aBYzgu\nJGGBTs2S0+UBzBPcfIZ0eku/V1tupYrNqDceQSuXg4CVnkLo1MTgy69OUVPF\nWZfaXLSYmKxCLKLgWTLm66L+C42pjwy85nQPHooCJrRRrKMP6YdV8SQPnJHL\ntZFGl8Bspw2pgzf+QTdyT9s/yy5VkZ2WoVoJZG0gMe8/zVBqxG/46xQyvPd4\nvUDA\r\n=eGTH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"8d0ee5b976e591aab55e5c9871642beb6c9eeb34","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes && yarn run moveChangelog","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","moveChangelog":"cp ./CHANGELOG.md ./dist/","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.6.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.4.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","typescript":"^3.1.6","@types/three":"^0.93.5","babel-eslint":"^10.0.1","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","awesome-typescript-loader":"^5.2.1","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.5.1_1541970806543_0.22357407323252199","host":"s3://npm-registry-packages"}},"3.5.2":{"name":"@cognite/3d-viewer","version":"3.5.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.5.2","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"ba4003a0107084e00c7305ed5eff835000d4d51d","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.5.2.tgz","fileCount":6,"integrity":"sha512-B/pX6YKZNrXNU/OJgZZSVGAuXe8KunUjybhshbp/7zjb4y3VJgYeYhKoAlTl4e44tSDf12lG6A7m1Zwp4heyGQ==","signatures":[{"sig":"MEUCIQD8M8qNDm2vPdqPEb2uVNz7AZCX0ucXCgtexNmK6fWqnAIgNnePKmSKSH7WBkk07vvTZzjQwDH5uyuoq8TuLWAw8BI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":930928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6KZOCRA9TVsSAnZWagAAKMMP/11yxWJ/obnPxxeammXp\nJeV1ToOj4R9w7bQyQFT2P3eix94U4RlNxY6gzpsWSqQb3uBza/DINalfIH1i\nLdBlSS8b9Y/w6ahgaTeVM6sEQ9SnzxoHkz8GLYuy1b7QMZPUMzg6kEHASuTH\ngFYG6DP+k1HelIjLr17RCWBkW5bh8BIkiDfEUw7MeAlIIQjGsRbTjelohxO1\nnEvDOdt88thgOF+Sf82RVyal+G5FJg/oGe0lVCCgIIc57Kmoawyv3ck1sncI\nKn6Ebgepj1R5l55b5t+tU7pW/zucsv4n+hp3GDFcjLQ8UqTZnVQovHK0UIec\nI27cHC2lRs9mZZ6yYLq9w7h9YvRYrw4UcltPy4PvXSYfZnzbEk5BBfmduKgx\nJOGPTxZpN9QDotRMJnsAjYc//OcTfkfcBUpYGXB67sgwvCYlsdlv9bNLw0PJ\n9RdzgoNU/rI1OftiA2wyeRmnwEY8Vc6Syhym79oiDBKdiDBKM+SgSmSqtl+h\nxbwu1Nanpcw7Y/Aigj4JmmG7JzbraLEUnawwhS7v46/Szah/ZaOk++2lQzBr\n+bSfFRMQZgyHDcv9uR0Uc4fCXPQjqMojfX3wJSSDmOzlUOpl4OLYZVZGhjqi\n7mkAUxZw0/utf23flmS4ww80rB7IMXNSsycFQrhWiBj5jw5J8ry9kvgUS/GB\nlAAj\r\n=Hd5w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"eac0f4a8f4c548e06ebb664b936fd4fb25b05a61","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes && yarn run moveChangelog","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","moveChangelog":"cp ./CHANGELOG.md ./dist/","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.6.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.4.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","typescript":"^3.1.6","@types/three":"^0.93.5","babel-eslint":"^10.0.1","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","awesome-typescript-loader":"^5.2.1","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.5.2_1541973581371_0.6256912966025439","host":"s3://npm-registry-packages"}},"3.5.3":{"name":"@cognite/3d-viewer","version":"3.5.3","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.5.3","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"5f901503def498448b085761e6f9ffcc8af349f3","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.5.3.tgz","fileCount":6,"integrity":"sha512-nXpuKRzbA+Ykv4YFgyQi5PaOWLcAkn/4ynyFa7lijgjR4X9YRWSKSCwMJDIHTc3dNkXHTd8YZypMAtauRXENjQ==","signatures":[{"sig":"MEQCICairQe4zlBCr40bSp5FtBJUkfPoOWCgRKLTtYtCkhktAiAp/i+nTQ2gNu7/mfnE5L2zbGPV80X7nsaQvw/ulq2lTw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":930934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6K87CRA9TVsSAnZWagAAkz0P/RZw+8c2yoUf2HC+H8uN\ntOCksR9TIQq1SHrdblYMbjCCWELOuLKv4I1Hd59ZOGSi5qIGTF50+mn2tt8f\njRgZwZhG4uKluUzNISFnBeaDXyRWo2aAz2ya+NSBF32sMxNaulzQUI2DqTCR\nPGKmBIfeDayS5DMVFcg8vYsGBvr5VCq7fIpAJzbB6IKfmERG9IFrn8y4C1IS\nAXR6oIHbAketZItrkkrHbiW3wefsRztHNSnac+/GXaJ1mJPGD6xWU5PYR3Pf\nfpNhkgTzy6LZIaEaKXdgEGaOj1An53ndno+CF2E33eNoel9hG1Yxjc3jP0wh\nKbPwyumfqY8nUmrZhJtC6KI9RWPuu+w4Ui5RrHoiqNmcnU5MjyGeT9ROeIgB\nqjVperw3XiRniQfrwDgwy9ToYEehoziM1ELkjI40iEF6WeWrseU6aTB6BEj4\n2Sr5KcGhDjM+Pi3U3qSedKMDS+XCF/57A5iHZ2Wh3CmXAD3mY9jtkud48LWZ\nrTpxO+8vm1ML7n+on0sSdBVgMP0r/Rkr2I/Y+oX9eXNPpwdh3UnahJ2LmS8v\n7Bf7/AFqeW9zTEq6SUuV7qFN+zG6AQMXzrq2zSZArROaff6stpfG0VVCKrV+\njGPOB2XNmaumMxgnD87xo+Mstgit2navKrzr61J53fm6LcVvj0N2TtzCpMHS\nU77g\r\n=9SfN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"bad1da6915b5dfba1d79cbc3f9d77ac89516a695","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes && yarn run moveChangelog","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public'","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","moveChangelog":"cp ./CHANGELOG.md ./dist/","prepublishOnly":"rm -rf dist/ && npm run build"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.6.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.4.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","typescript":"^3.1.6","@types/three":"^0.93.5","babel-eslint":"^10.0.1","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","awesome-typescript-loader":"^5.2.1","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.5.3_1541975866575_0.5488541898031738","host":"s3://npm-registry-packages"}},"3.6.0":{"name":"@cognite/3d-viewer","version":"3.6.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.6.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"2880ff077c9f79bc00730b8cc6560dd7f8cfa1d8","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.6.0.tgz","fileCount":6,"integrity":"sha512-s4PkhKTIUwxRw+UM2jx346lo7J3ZnGCHCnq1XSfAtm1ayIlMW/b8T8qYbf8u89RR9CYxOcqw+AN02PJ2OQqC6g==","signatures":[{"sig":"MEUCIQCcg7WfkxXNAvQ6v3ViO/6fbS7eGPnohDvVJHdV8VNsuwIgZCHZ/yen7OcFTWBFL+QZC04Tgh4f3T2T8g3MF0AmbEE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":932949,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6U9KCRA9TVsSAnZWagAAUAgP/2sNAb8/KqNHyF5lgoq4\ntyKmCF9Bsp/mDp9ymwbfEBpGAras3NWr0ZGt91PD0424HQaQqDAx1Au9KhDN\nDSi1i20s8LM/ehKSG4oVU+KfYjSvr6NMR8gwgKsI8Ptt0KaFXVwXyfvWCLQU\nncAIwvkgG1aAIdTi8R0VRSALnsBORSN3SFcKRVn/oxPoPvaxCnmrlph3rTmk\nAkHyKQS2lIdq0stzFxRzDPKPHu28zep2KCtpMlvCbOityeyb2DAagGIUICeu\np8OXaYUB+sRv19rycC1sPBiRNLfnY/v4E+4wHOZkN2bMszcoNSxqMkFeaaXU\nW+ImmGSQ1egUPUdx++xCOXWnhqgyhAr0pzWoVdcYO1T+zfRgrRmzN8ocgT8s\nBN4I5U+j0G1fCwEBbK+a1oRt6HXWoepFrEoxLUu2NYlHETUxQBziJ3WQyh6u\nYD/ieKDWgxlPiul7w9EoWuif5G0Prw+no46w6SPtP7vMbC474DKcziQA/tC1\njPkTGGKgZtoNBYLpI9LhR8AOW9zRKOrAC37240yIspjKrz50VVqhjaxRPk5f\nhwsFZ+qu6+8DmkG7ro7XUspPohd2S8GAjHi1yztNd+h7uK4pJLtqgkyosAJq\nGpH03vC4o1HvzFMJ4v8Xs3tLCzTKmNUKlMatOdHeYpunS5wkJWjk/Soo4qvU\nEYDW\r\n=PNSV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"1e298ea5226d43b0fbf6b1c3e1905e938c4258f8","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes && yarn run moveChangelog","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public' && yarn run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","moveChangelog":"cp ./CHANGELOG.md ./dist/","prepublishOnly":"rm -rf dist/ && npm run build","validateDocLinks":"yarn markdown-link-check README.md && yarn markdown-link-check README-dev.md "},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"5.6.0","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.4.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","typescript":"^3.1.6","@types/three":"^0.93.5","babel-eslint":"^10.0.1","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","awesome-typescript-loader":"^5.2.1","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.6.0_1542016841478_0.3238190449405858","host":"s3://npm-registry-packages"}},"3.7.0":{"name":"@cognite/3d-viewer","version":"3.7.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.7.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"178c49791c7f3ec0f2a08f749f680d9803c0436c","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.7.0.tgz","fileCount":6,"integrity":"sha512-9vKIi5rd+I+62ltconjYAOyMeBgKXTaPA6HpCQVX28xMJ+hmsdwACbRG+8XyxXjnxElrDbdgedazax8Ogf5YPw==","signatures":[{"sig":"MEYCIQDRQYCtF9fA94TcvBQSeoR/LyJ02juRYKKs8m8XUkttfQIhANx/4/Zbx6O32TYMN0wqwBOZGB+J3ghgdjd9Sd9S0+oV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":936755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6bRaCRA9TVsSAnZWagAAHZ0P/AkLE1UwoR6SXyzkeshg\n8NhGXlsQ4Xf+ewB9tkIWCMCNXdQVRFCiUekC5Y5vODEYKZqkrxAw0WF3wXnZ\niPgj+xZieGb81tYmAhZ81v5bxGpC++1QQmR2fCHYDPoL+k5SuU1d8x90jC9w\ndqAnTu8kVCnuF/dB2XMp3o8gNoQJIaQIobnln+Fqq+2YTAKOsKZP2cZbwoYk\nf9bNMBi5JozziOixK1HauZS/8yMnM2oemEdST8RIT4HV2LonvoirzE0xbBcV\nwsoTyfT7hVkqu/U84IVF09PBK7wLruid7cf2/MSCgEmcTdgbLlKtPKyu05Hz\nTcVRTbtu19dedkSdOp9hf1qc7gvLXC85Wz2WtppkkuDUGLoo8xglf+NKVGAU\nmv3WmldpALWraI1lKjwjDyBfItQ84Cb9aB/YRvVay8jKXYwOBe0O2qYZu/EU\nSaZUdYj1+exqsST8eDjJSc3fWbl2FtffAkDxRQd1PRhuJHuvh9w3y/+g2W8G\np/a9qJlx4g+4WqDL7EamCdsUBzqXmbscXv9L4/QVQhfWFXIsTlXUAX9k14yY\nwuJg+8+Ko7pAhsqWOJTV5vFUrYw1MuVb5mwqwyxAhQ9WB2VyssHTvpSRvSrS\nD3SLVVCSYkl8f7G8H69cFRBKY5azmgDwcjcXHOmHsGEAPani9/m4NRZiN6nP\nFKbB\r\n=XZYQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"8afd9d959d5f7893a161d72ca495e800094d769e","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes && yarn run moveChangelog","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public' && yarn run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","moveChangelog":"cp ./CHANGELOG.md ./dist/","prepublishOnly":"rm -rf dist/ && npm run build","validateDocLinks":"yarn markdown-link-check README.md && yarn markdown-link-check README-dev.md "},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.6.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","typescript":"^3.1.6","@types/three":"^0.93.5","babel-eslint":"^10.0.1","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","awesome-typescript-loader":"^5.2.1","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.7.0_1542042713400_0.42928560894206735","host":"s3://npm-registry-packages"}},"3.7.1":{"name":"@cognite/3d-viewer","version":"3.7.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.7.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"baba649afe406888bbd9319cf3f46a10669f2408","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.7.1.tgz","fileCount":6,"integrity":"sha512-7HRCujeQvK5Sy7UPh7d8OSYnV9pKtquj6d0AdFc87Cg4SGgKNhn6jIgwP1CWzOYjj+BDMZMaFEH+Am4Kkzm9nA==","signatures":[{"sig":"MEUCIGfsNScjn7OUPv1BwF0eAO+XC26xcRdY1HztWMTNq4MmAiEA7b21P/JjTeb6nZGCJ7BYVUBNx2RIcswCiTtNITvBBF4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":939504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6tXECRA9TVsSAnZWagAARgEP/RUlRnGFL+ckP8iiG5G0\n1k3YcpUVhwCbiusK19T0GLwN4Tucd3ZMKOzpbJ1cbz2Njy0c5WqHjWZFhDIb\n38PRXzvpdAJiF3AyyrKPi4hZ6H25Nd3XXqFr/sAfgk5lHSTyJMn3bj4WWpTE\nsjvoXrrgHIdhwUO6hpkMisqDM9rAq5sWjmgLGzKN+SOx90ELfRNmhrzIg+Mp\nBzgHiPnNoK1PKYyY+zndmlv3H5AaoOtRNuFWScsb6+s/3vn8OUuP+rK1rmH8\nEETXbq8MXuCF+GJ8ASNzGkBWoNiLEYaSVrcf8SdaS2QDyJ9Au9yTCr0Xm4ca\nclRWlEyVi/u5dawoKGbVEqvtqXt1bQbGkVTUtvbFgxG4Akyydo3gNfr4GYJ9\n+IhlrQySYl6bGc3xO84mBeb34W+WNZPZBptHgilz+AVgmMDN0kJ+XHTbJxg1\ni27Dnw4M7DXPAj4q/c5hPzLHQwpx0WURcKtlixh0ZZN+MuUtjjObUMHDZ1he\nEfSatU6XGJekQzbOZ7BazkT1qEtV/uTTo+0+j7kTaT3Hw9D14EEmhvoRR10n\nnE0lOa0MI7TbuRd9Wr1kitcusvL8BiVoGyaq8p+IYG2bXHMkhBjoTh8E2xhp\nRCE9YU2CLKCZhXlkuKXnS7FLFy3wIB7Dnu8pbD5TWBpJ3XMNwG/Hc1sDIgj2\ng7r8\r\n=/znL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"f54ec0525f53799bed68a6136f77cc66335a2201","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes && yarn run moveChangelog","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public' && yarn run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","moveChangelog":"cp ./CHANGELOG.md ./dist/","prepublishOnly":"rm -rf dist/ && npm run build","validateDocLinks":"yarn markdown-link-check README.md && yarn markdown-link-check README-dev.md "},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.6.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","typescript":"^3.1.6","@types/three":"^0.93.5","babel-eslint":"^10.0.1","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","awesome-typescript-loader":"^5.2.1","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.7.1_1542116803471_0.49329211373686377","host":"s3://npm-registry-packages"}},"3.7.2":{"name":"@cognite/3d-viewer","version":"3.7.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.7.2","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"8f8b40d3494768ca3a0c8113e5a08600c4125d27","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.7.2.tgz","fileCount":5,"integrity":"sha512-MGnDaugIaxiQS78teBFgBmbnfOW0jxvZszux5xzw8vbpCbgJwF7rByzrDDieDWibbw8bpg/IBp4VquHAq6dVlg==","signatures":[{"sig":"MEQCID/KYu0Lfv8SOAHz3uXqt+r/Olmdb3VLoEZlVAX1aw+RAiB0SWRLupdh0bWYtQEOYsz5poRTCm3m8eSFtNHppdNqOw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":938330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7BoBCRA9TVsSAnZWagAA2EkQAJHczbG7ebluisJng7UW\nzjDbEoCfQb15m1kXmDzzVDO0x7BEM2d1tozU1QNdvV+xseGqzNyV767JfnqP\nsTu+leD+Y68ch43lip2ErMC4fgh5AKDjQ/MfNkqO4ErfJ/K3cXZy/T+bvllG\ntRaJxYMI56mZmHhwLOZ38n/RRsgkeeCJ0T0iKDO5WoRPGQub2kEzm06qDQHU\nIpZulj3tPEPLPE3IinA6R499xV5XdQ8589k27FtggESEMKXVBplaQVmFtdYF\nG8ns9wUzKhzfNaL0Qrcy6pRNMH7OhNyzN6ew2LKJhhQszwGRnPs8TSyww7ah\nPcrQOLcmI56YgBkAMtnStXMNbwRIL+pcKBzWMOxDxgEvzuKyVKh3G58+SWvd\nhqzlgNhCBIaXp8stinnWQaWWf6iRqC2P7Dz7nkUZGIMlfEA9vJxhKs5uXJSP\n5KWNXIzunLak9bvo8CzSXRjiS1OJIbevSYzX0M/aqPZJEPQ+4+EGYsI/wvwK\nOBy92EfMM7kxXsFAG7Vk80dDAanBiRHG0TbmdZSOguytVIWcW7VAJaks8cwm\ntoSu0X8u4e1agp+on35QGVTkTRjmdV5cLLj+R4dhiV1oudSZCZ1LEBt5WiQN\nJerVzamUWo+jYKmgZ/chfQy1jsQRoEE0lWgzwcsXoM3vKBVJXDouoTF+S3LL\n22KW\r\n=pkNK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"4eed73698cba9a414fe54940be39e9422c055415","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes && yarn run validateTimestamps","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public' && yarn run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","prepublishOnly":"rm -rf dist/ && npm run build","validateDocLinks":"yarn markdown-link-check README.md && yarn markdown-link-check README-dev.md ","validateTimestamps":"node ./scripts/validateTimestamps.js"},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.6.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","typescript":"^3.1.6","@types/three":"^0.93.5","babel-eslint":"^10.0.1","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","awesome-typescript-loader":"^5.2.1","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.7.2_1542199803083_0.26667415686123785","host":"s3://npm-registry-packages"}},"3.7.3":{"name":"@cognite/3d-viewer","version":"3.7.3","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.7.3","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"11796d889e6f4a7861e1527a3bb8370dc99edb9f","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.7.3.tgz","fileCount":5,"integrity":"sha512-vEghbZyQuwWT4BiZdoUav3n78Npy1U6/n97ck4w1AILArbbrmQF3pViBFu/1avt5avwtJ3jh51LUku/PgbESNg==","signatures":[{"sig":"MEYCIQDlePbgsGSXKhGFRkQXovLnFv/wwbEMBusQiH+FFYCUgwIhAPmgtQaS9Z5PghKht9Jzx0+p01ZadRley944zGj3NeH0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":970454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8q+eCRA9TVsSAnZWagAAkEQP/0V9a6eHFihSPTQRhADL\nbSI7iciN9zubg878tBKSfcpfMw9YfkOIgGD0xc1yb9jIYBRh7xQoFX4VFFxb\nX9xReqDZPq70+4iKveV8oWJ7og2mgB6f0AUpNx9op8lywgW1XCelIfgY9YVH\neV7CbvDmH83qhii/16APR76yMd/Ug0/Q4EuxN8UBaYJWi2/Gjpe9fzMoUusQ\niSv2OpKeSGbO3+gm5K5eGQJbU2MQRjuf0g95SRcTRcGxfjKWiIlosA2GfnDS\n914auqHVKwIX42KNtDfk2klILxeyRk2n/K6xhDIGOuKrlJq1UyyHRUBROAsK\nQxOwvpFp6exCMzZQdfWytkJk2NfZ1rggn2Ee8BQcGCxC0uNAVbHZ3YUvulgA\nn/4v8oUXjE+RYdnlewrI+t7fy6ZaGyew6e7xiOeICLoK2uL2HPG/hS+7F7Jn\nIs8q4+Cau+W8Dm5g9SIIVfaD5XjHZk0xcfk5CFFa381d2NgDMLC3sZveME0z\nZOFJo2F2+JBxQyXSy05BJhCQaHkIS9z6q0TdLKbZReTFm385seZ/+spQg6eN\n4I/pyd6/MWoXLTJOnFVHKtKYgThUry1H84ccN3m1dHS4eeUUnvQlnoao6nkL\nD+I7PvAbtG7PBhK5Cazdn5myhkR2G5FYnFVnc/pyJ4Fgqx17Xjnvuzx45L/D\nm74l\r\n=HB39\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"c1efe8003a462d0192833bc1e91f31fc4ce3908e","scripts":{"lint":"eslint src test","test":"true","build":"NODE_ENV=production node build/build.js && yarn run esCheck && yarn run moveTypes && yarn run validateTimestamps","clean":"[ ! -d dist ] || rm -r dist","start":"node build/dev-server.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"NODE_ENV=development node build/build.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public' && yarn run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","prepublishOnly":"rm -rf dist/ && npm run build","validateDocLinks":"yarn markdown-link-check README.md && yarn markdown-link-check README-dev.md ","validateTimestamps":"node ./scripts/validateTimestamps.js"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","browserlist":["> 1%","last 2 versions","not ie <= 8"],"description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"10.9.0","dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","whatwg-fetch":"^2.0.4","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.6.0","@wildpeaks/three-webpack-plugin":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"opn":"^5.3.0","ora":"^2.1.0","chalk":"^2.3.0","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","express":"^4.16.2","shelljs":"^0.8.2","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","typescript":"^3.1.6","@types/three":"^0.93.5","babel-eslint":"^10.0.1","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","express-static-gzip":"^0.3.2","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","eventsource-polyfill":"^0.9.6","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-dev-middleware":"^1.12.0","webpack-hot-middleware":"^2.20.0","uglifyjs-webpack-plugin":"^1.2.6","@cognite/release-manager":"^0.1.69","awesome-typescript-loader":"^5.2.1","friendly-errors-webpack-plugin":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.7.3_1542631325803_0.40507358894787626","host":"s3://npm-registry-packages"}},"3.8.0":{"name":"@cognite/3d-viewer","version":"3.8.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.8.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"2a7d3e4e0aafd36ffed4d1418496bb77bc450d1d","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.8.0.tgz","fileCount":6,"integrity":"sha512-Mhu+PD30kTdC3zjt39YgJ+2RloxfRAHuMVE9JeRFD4EJBdYFTZejlVInpdGW30BOHbz9w2bZ/WwvjwV/NFwiuw==","signatures":[{"sig":"MEUCIQDK4eN3AZMYjqtNaC1nx4Z1iIT19kIMf1JhEhBCmnGmaQIgJg/pRWJ33zbO4oalZjNNm0Cmul6eJ/EkGvCeT3+9UNI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1257079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/TE4CRA9TVsSAnZWagAAaWIP/1NLe2VCenXmAluBfMjI\nnutSAfDWUo4hGOUsLd6zwe9E2P5q/MuM9hdiRmoSdFuJUsijuKMnPmTYymIA\nmq4OZE/5UJdII6paB+zvMlQaRgUGl8nKYOEpMrSbHfFt7XmuFbPoniAhxIbu\nuJh0dmitqGYtebDU6rizKatLCSr57+XjsXpVGKHu9kKBvGd2u7B589Bhx+x0\nn09u6WqLFkZvA0eJEXN1B+HxuOZr2zSL3sn9uiFNWNPb0uOXVnVDky2zx9rc\n2i2Lk3w21HC5VBbmMBp0P6E2Kn72ni4B70QyeuzKbKEkIbSElqiO/3oQ1d4+\nthnR/NQ0I/XF7n0htBbpzuwMo+c5kiZLYqh0L8dxRRYYaouND8scUVir4/GZ\n0sZyfpWmc0ejoNyPYP28jYeFmMW2MczINqFdhP0CPnPiAOyRPgD3w/O0E/BI\nQCQs/STtqtXzusMR+e0wZ++ojgJNWGsR7q/GtJMzd9+QCo8fkTP9z3UyRm3n\nuG1bzMbh9At+XopWC9CGq7tLlsJoVMsM30FrDoatb3TViBu6OO0jlz0TY4Mt\nOnzQGn6/tnsqX7MujQMejJqnFu7h1xHuEskPY0jAepjETl9L3hKOjCNI6TQT\nBU09VeMa+T2BS8IxPbwZHhpAMDN1pgtV4xRsk740Yzn/fnK3FldkG0ppkB9n\nIfy3\r\n=p32K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","module":"dist/cognite.module.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"4cbe5a32f91a6c8cdbe8ff3058dc032345b6d485","scripts":{"lint":"eslint src test","test":"true","build":"yarn run build:bundle && yarn run build:dist","clean":"[ ! -d dist ] || rm -r dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.conf.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"webpack --color --progress --config build/webpack.dev.conf.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public' && yarn run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:dist":"webpack -p --color --progress --config build/webpack.prod.conf.min.js && yarn run esCheck && yarn run moveTypes","build:bundle":"webpack -p --color --progress --config build/webpack.prod.conf.js && yarn run esCheck && yarn run moveTypes","prepublishOnly":"rm -rf dist/ && npm run build","validateDocLinks":"yarn markdown-link-check README.md && yarn markdown-link-check README-dev.md "},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","browserslist":["> 1%","last 2 versions","not ie <= 8"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","@cognite/3d-camera-controls":"^1.6.0"},"eslintConfig":{"rules":{"no-plusplus":[0],"no-param-reassign":[0],"no-underscore-dangle":[0],"class-methods-use-this":[0]},"extends":["@cognite"]},"eslintIgnore":["config/*.js","vnd/*.js","node_modules/**/*.js"],"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","happypack":"^5.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","webpack-cli":"^3.1.2","@types/three":"^0.93.5","babel-eslint":"^10.0.1","cache-loader":"^1.2.5","whatwg-fetch":"^3.0.0","documentation":"^8.0.0","thread-loader":"^1.2.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.4.15"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.8.0_1543319863285_0.9460492808297674","host":"s3://npm-registry-packages"}},"3.8.1":{"name":"@cognite/3d-viewer","version":"3.8.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.8.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annlee-cognite","email":"annlee.li@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"chadbisset","email":"chad.bisset@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"haowei.guo","email":"haowei.guo@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"jasmineleeson","email":"jasmine.leeson@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"4bcf18c67f89109ebe55f2b8bdf8dd9e3b5ecb28","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.8.1.tgz","fileCount":6,"integrity":"sha512-laC7Cwr830JSEZbPtdh7cYmEIC+f9paj1KUnojHcpa9+ajxbaiFFTqgBOXbP+Ux1fkelNKDd5SmgtCvjQtK7MQ==","signatures":[{"sig":"MEUCIASZdV6gTCWQwQoQ/gtptQVEoFiA6hzlHtg62TF2rRChAiEA4TlItCnbEZKmNu+kpimQWSRakZbNdohzLJIpTqNi/o0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1257357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAQTwCRA9TVsSAnZWagAA/w4QAI7IjBOp89vO9BBL0j+C\nmTMXyjWAGH3swZFZHoo1B2ZH6YScrmJI7Nm8LCS1r0UrS0I2/2JWD6G/X2TK\nLS0jckVlZXfSuiF5B+4Zo6U/hKgJqYknMchxf/29wHbN2s1RAi7O6lcnZL76\n9dApNWjIO783XLfPPy55QqpCBGxkmHdI0+nr7WEpIJyOFj8kKgTznIvxP5Tg\nu8V8dOmL2YPYsWGWfZi5cIN9xc/fcYAYurd20ttX58XflRaS/O6Mk6C9uQLn\nIFKFBozUKnQcVd9e3YS8UIJwqdpWM/muFAOaKKiadFukyH7sYaoEXJXCgCR+\nJhz43nWRGM9pZBRLKAuIWVzsBI9Jpu2PiEYt7ydJZ7p/PVb0Ik4nK5csCvkW\n7qgKOcdm59rfBJ4/YbUHQVNXr0/ABWhydaUnFUnCf4pjOjM8eTg1ZMV0QJLo\ntOLl0gJ8V1tvmL2bGkwFUrUDPa61Zdcgi5lZ/xkWSy9RSomuU2uW/ANcZe6E\nzRGPgBJf6l435eOGKf2OwwBcmLdMsKL2f1F7dSUPCsNk7xCX76roROtfue1V\n5Iaq7ECCxwKJZBx3N36IFmB4ASUo7ZyoamL8/xJcayfEM//3xU2XlKdPgbgq\ntJ+ptOu6z3tWY0sTZ7wlmF/gRHYS5qyc6MGYLNJi2wbeip44M3zgnfPIkkd1\nzxOU\r\n=6uua\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.bundle.js","types":"dist/index.d.ts","module":"dist/cognite.module.js","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"yarn run build:bundle && yarn run build:dist","clean":"[ ! -d dist ] || rm -r dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.conf.js","esCheck":"yarn run es-check es5 './dist/**/*.js'","build:dev":"webpack --color --progress --config build/webpack.dev.conf.js","buildDocs":"yarn run documentation readme 'src/**' --section='API Reference' --format=md --access='public' && yarn run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:dist":"webpack -p --color --progress --config build/webpack.prod.conf.min.js && yarn run esCheck && yarn run moveTypes","build:bundle":"webpack -p --color --progress --config build/webpack.prod.conf.js && yarn run esCheck && yarn run moveTypes","prepublishOnly":"rm -rf dist/ && npm run build","validateDocLinks":"yarn markdown-link-check README.md && yarn markdown-link-check README-dev.md "},"_npmUser":{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"9.11.2","browserslist":["> 1%","last 2 versions","not ie <= 8"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/3d-camera-controls":"^1.6.0"},"eslintConfig":{"rules":{"no-plusplus":[0],"no-param-reassign":[0],"no-underscore-dangle":[0],"class-methods-use-this":[0]},"extends":["@cognite"]},"eslintIgnore":["config/*.js","vnd/*.js","node_modules/**/*.js"],"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","happypack":"^5.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","webpack-cli":"^3.1.2","@types/three":"^0.93.5","babel-eslint":"^10.0.1","cache-loader":"^1.2.5","whatwg-fetch":"^3.0.0","documentation":"^8.0.0","thread-loader":"^1.2.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.4.15"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.8.1_1543570671495_0.6011214519431962","host":"s3://npm-registry-packages"}},"3.9.0-beta.0":{"name":"@cognite/3d-viewer","version":"3.9.0-beta.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.9.0-beta.0","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"b2bda6e85090389080f53c425c8c43594ba26a9b","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.9.0-beta.0.tgz","fileCount":6,"integrity":"sha512-MzlJTwk7khzyAceit69a61u6WwT0MjhnMuwU/TRmc+MtRDJAoh6YYodYI561F5k+MP1XdzXfUrl8eQ+uPzXXtQ==","signatures":[{"sig":"MEUCIBfoOIOByLJHafTjoFRqEgCoUkHEGVJKbSZSs8AgcAMQAiEAsunPj5GD3qP3DBh3OEViRkQWJhWrwhpA5BwUhsp8NlM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1189955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcV4WFCRA9TVsSAnZWagAABtMP/0A3hVxWtep5A58+gvXr\naxOIt9GM3ueaAcPrSfOxhyjuOovbkcxtVeq3K/P5PlKhnK4DBL1AVKyen1mj\n016wcMeroKO3bYbYzQoqU8LCYAfBwjM3NqIj2YsEjknqfK5PnADQFqo/RJIu\nsVN5LKZiGZPM18YxxeAn39wv92xL84oC0oj5X1XP0c37yDmbCDCQ92cBJ0XX\nFkHmm2f3Qw7ltrJfgbiMUZGNJRryuz7D5Bug8gu1UdQq/lvc/xSszmj4ln8h\nefMAc9krRWjXEqdpZQ4GiZOXD9/gDfgpNwtY/LDSL1Llc0GLmCl8v58N4yId\nnvcP1TOtim0833HWVKXhcCtP3xK4FPgLxLzG0zArYGf6QznqTSFPzKnqG2nQ\nmBjoJR81g+oIwun0GEmYnPlfSWArte5ACPtvra+jlcCeG7ZnacpeQ8Lch9Dv\nSqk/1DgY3ODUBK/vPmRho6g2jiEOrihb2StMbp/hES+JdW2voxf3pjFSc+uo\ngMKD8tayJmA/ZAnmRh0OYyMl2jUCLCD5VUTSSicggoagZ/doTmKZvaO4Jg4d\n47DCVEZZYFlGpoJSAkeFxZNCDGn1i8q3u4bEK3nByPi5PNW2PWI7R0v5t4k2\nRBs6Q9cspMksJRyWrBj2Wu/O/3jZC3HgObay8e+kc6AjP6cezX7h15pWNKQ3\nLu/9\r\n=6zuJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite's Data Platform](#cognites-data-platform)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Cognite's Data Platform\n\nTo be able to use this 3D viewer you need to have access to Cognite's Data Platform (CDP). You can upload 3D models to our platform by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application.\n\n## Usage\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\nconst viewer = new Cognite3DViewer();\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n-   [Fetch polyfill](https://github.com/github/fetch) to use in Internet Explorer 11\n\n### Sample code\n\n```js\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case. By default the canvas will have this style:\n>\n> ```css\n> {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId, null, model.matrix);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite's Data Platform which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-2)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-3)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-4)\n    -   [addObject3D](#addobject3d)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-5)\n    -   [removeObject3D](#removeobject3d)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-6)\n    -   [setSlicePoint](#setslicepoint)\n        -   [Parameters](#parameters-6)\n        -   [Examples](#examples-7)\n    -   [setSlicePlanes](#setsliceplanes)\n        -   [Parameters](#parameters-7)\n        -   [Examples](#examples-8)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-9)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-10)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-8)\n        -   [Examples](#examples-11)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-12)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-10)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-11)\n    -   [worldToScreen](#worldtoscreen)\n        -   [Parameters](#parameters-12)\n        -   [Examples](#examples-13)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n        -   [Parameters](#parameters-13)\n        -   [Examples](#examples-14)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-14)\n-   [Intersection](#intersection)\n    -   [Properties](#properties)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n        -   [Parameters](#parameters-15)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-15)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-17)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-18)\n    -   [resetNodeColor](#resetnodecolor)\n        -   [Parameters](#parameters-19)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-20)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-21)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n        -   [Parameters](#parameters-22)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n        -   [Parameters](#parameters-23)\n    -   [hideNode](#hidenode)\n        -   [Parameters](#parameters-24)\n-   [getNode](#getnode)\n    -   [Parameters](#parameters-25)\n-   [Node](#node)\n    -   [Properties](#properties-1)\n-   [AssetMapping](#assetmapping)\n    -   [Properties](#properties-2)\n-   [getAssetMappingsFromNodeId](#getassetmappingsfromnodeid)\n    -   [Parameters](#parameters-26)\n-   [getAssetMappingsFromAssetId](#getassetmappingsfromassetid)\n    -   [Parameters](#parameters-27)\n-   [getSectorsFromBoundingBox](#getsectorsfromboundingbox)\n    -   [Parameters](#parameters-28)\n-   [Sector](#sector)\n    -   [Properties](#properties-3)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-29)\n        -   [Examples](#examples-16)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](#fitcameratomodel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicePoint\n\n-   **See: [setSlicePlanes](#setsliceplanes)**\n\nSet slice point. Geometries will be hidden relative to this point based on slice planes specified by [setSlicePlanes](#setsliceplanes).\n\n##### Parameters\n\n-   `slicePoint` **THREE.Vector3** \\-- Slice point\n\n##### Examples\n\n```javascript\nconst slicePoint = new THREE.Vector3(1, 0, 0);\nviewer.setSlicePoint(slicePoint);\n```\n\n#### setSlicePlanes\n\n-   **See: [setSlicePoint](#setslicepoint)**\n\nSet slice planes. Each component controls slicing for its direction.\nA value of +1 hides geometries in the positive direction relative to slicePoint.\nA value of -1 hides geometries in the negative direction relative to slicePoint.\nA value of 0 disables slicing for that plane.\n\n##### Parameters\n\n-   `slicePlanes` **THREE.Vector3** \\-- Slice plane information\n\n##### Examples\n\n```javascript\n// Hide geometries with larger z-component than slicePoint. No slicing in x and y.\nconst slicePlanes = new THREE.Vector3(0, 0, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with smaller x-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(-1, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with larger x,y and z-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(1, 1, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Disable slicing.\nconst slicePlanes = new THREE.Vector3(0, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the canvas)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the canvas)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and its state\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize then this can help avoid an API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n-   `matrix` **THREE.Matrix4?** \\-- Optional transformation matrix. If not specified, identity matrix is used and bounding box will be in local space of the model.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox, model.matrix); // world space\n// box === reusableBox\n```\n\n```javascript\nmodel.updateMatrixWorld();\nconst reusableBox = new THREE.Box3();\nconst matrix = model.matrixWorld;\nconst box = model.getBoundingBox(nodeId, reusableBox, matrix);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n#### showNode\n\nShow a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes\n\n#### hideAllNodes\n\nHide all nodes\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n### getNode\n\nGet a single node.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the node to retrieve.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Node](#node)>** \n\n### Node\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `id` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id\n-   `treeIndex` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The tree index\n-   `parentId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id of the parent\n-   `name` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The name of the node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Size of the subtree where this node is the root. This number included the node it self.\n-   `depth` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The depth level from the overall root node (0-indexed).\n-   `boundingBox` **THREE.Box3** \\-- The bounding box for the subtree where this node is the root.\n\n### AssetMapping\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id for the mapping\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The mapped asset id\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Size of the subtree with the node with id = nodeId as root\n\n### getAssetMappingsFromNodeId\n\nGet the assets associated with a given node.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the node to get the associated assets of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[AssetMapping](#assetmapping)]>** \n\n### getAssetMappingsFromAssetId\n\nGet the node ids associated with a given asset.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the asset to get the associated nodes of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[AssetMapping](#assetmapping)]>** \n\n### getSectorsFromBoundingBox\n\nGet sectors intesecting a bounding box.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `boundingBox` **THREE.Box3** \\-- The bounding box\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[Sector](#sector)]>** A list of sectors intersecting the bounding box\n\n### Sector\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `id` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The sector id\n-   `parentId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The id of the parent sector. Undefined if it is the root sector.\n-   `path` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- A string representing the path from the root sector to this sector. Describes how to traverse the sector tree to get to this sector.\n-   `depth` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The depth level from the root sector (0-indexed).\n-   `threedFileId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- File id for the file describing geometries attached to the sector. Use /3d/files to retrieve it.\n-   `boundingBox` **THREE.Box3** \\-- The bounding box of which the sector covers.\n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"44b6a5847dfdf0f17d2e8c0e73ec6d895e9cd2b2","scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.8","fast-filter":"^1.0.4","is-function":"^1.0.1","@cognite/sdk":"^1.4.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.2.0","@cognite/three-combo-controls":"^1.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","babel-plugin-transform-class-properties":"^6.24.1"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.9.0-beta.0_1549239685181_0.08991190375973201","host":"s3://npm-registry-packages"}},"3.9.0-beta.1":{"name":"@cognite/3d-viewer","version":"3.9.0-beta.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.9.0-beta.1","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"57f768f94cb9fef342605f6ad0c1fbff85289b0f","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.9.0-beta.1.tgz","fileCount":6,"integrity":"sha512-wjuPaiyOJNUNlulrhjmmdfTwqIOQGs/4jHlePyyC9TyOXCmPlH3FSlJUNd6ysfXqS5gUMDAY2h04QGkWD9QWMA==","signatures":[{"sig":"MEUCIQCNXEyuyY8Vv05U2Oqd5KnzS8o9mY96hvcbS2VwIfbhqgIgDLh/OC8eTkUD5JhmNMjSIFtAgfFboWivfEmvEEvYIwk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1189642,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWB5wCRA9TVsSAnZWagAAEC8P/jhtviRaJOn9+N9Km88S\n6ZUpCfVvsTj+Ux73T8SbXLcFVau2+hC/iYO3RzAYJoSTYNGLQsytYaxeybKE\nBgsNQCGFy0JZsfSUJQtVg9F0GpYMj1tu/H88Y+748A3ula+HTErmIpbqAMEs\nNcpF+s+WoXFLlPXR4RILQ3nmaJKeJtkujXLzm76uladCSlrGNeNNIhMRRi5m\n2VVgUx0xbYFGQlRO0wgBDSXEL3DNrQVef9Ji8pDJlOqEnYGjMSgCJkDkwfz0\no+f/YNp+lz27Id+jhI3kK1dcpeSUE853dSaQ0LeZiawbf3jAo11OwZ+IBkHz\nirC5OEd2PB731RmFQaj4FxTWvJqxWG/QfCksrN4WtcbiQog1Q5Igqeeb5nPw\n3GnTxKYd8SLJEaPq402Qpp/jHSs7aYf03rpDJq3Tnp48TVgel3YndYNnoqc9\nc2pOCoFQ7wbWd0TM5yy9TApZnIU7dX0XqZutYAS8dGqNMrJ811Dm2wO4IqLA\nQDWpFXuYADEREFcc0rsO0hfRh50Ce9LMosB2omeGagtXr6/hCIngAyphmWTS\nQZ/p9+PmOG9R2VAhLOFQTuwyzGURQwHrmdmdwBRI8f80eTpVF3t9pFMllSjb\nK/QTWNIICc+T8OKbhuhS65aB8LcynidGexxr5Wovx1ftiavC/8NpAaC566Vk\n2vu6\r\n=i1xe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite's Data Platform](#cognites-data-platform)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Cognite's Data Platform\n\nTo be able to use this 3D viewer you need to have access to Cognite's Data Platform (CDP). You can upload 3D models to our platform by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application.\n\n## Usage\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\nconst viewer = new Cognite3DViewer();\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n-   [Fetch polyfill](https://github.com/github/fetch) to use in Internet Explorer 11\n\n### Sample code\n\n```js\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case. By default the canvas will have this style:\n>\n> ```css\n> {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId, null, model.matrix);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite's Data Platform which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-2)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-3)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-4)\n    -   [addObject3D](#addobject3d)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-5)\n    -   [removeObject3D](#removeobject3d)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-6)\n    -   [setSlicePoint](#setslicepoint)\n        -   [Parameters](#parameters-6)\n        -   [Examples](#examples-7)\n    -   [setSlicePlanes](#setsliceplanes)\n        -   [Parameters](#parameters-7)\n        -   [Examples](#examples-8)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-9)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-10)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-8)\n        -   [Examples](#examples-11)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-12)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-10)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-11)\n    -   [worldToScreen](#worldtoscreen)\n        -   [Parameters](#parameters-12)\n        -   [Examples](#examples-13)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n        -   [Parameters](#parameters-13)\n        -   [Examples](#examples-14)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-14)\n-   [Intersection](#intersection)\n    -   [Properties](#properties)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n        -   [Parameters](#parameters-15)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-15)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-17)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-18)\n    -   [resetNodeColor](#resetnodecolor)\n        -   [Parameters](#parameters-19)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-20)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-21)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n        -   [Parameters](#parameters-22)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n        -   [Parameters](#parameters-23)\n    -   [hideNode](#hidenode)\n        -   [Parameters](#parameters-24)\n-   [getNode](#getnode)\n    -   [Parameters](#parameters-25)\n-   [Node](#node)\n    -   [Properties](#properties-1)\n-   [AssetMapping](#assetmapping)\n    -   [Properties](#properties-2)\n-   [getAssetMappingsFromNodeId](#getassetmappingsfromnodeid)\n    -   [Parameters](#parameters-26)\n-   [getAssetMappingsFromAssetId](#getassetmappingsfromassetid)\n    -   [Parameters](#parameters-27)\n-   [getSectorsFromBoundingBox](#getsectorsfromboundingbox)\n    -   [Parameters](#parameters-28)\n-   [Sector](#sector)\n    -   [Properties](#properties-3)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-29)\n        -   [Examples](#examples-16)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](#fitcameratomodel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicePoint\n\n-   **See: [setSlicePlanes](#setsliceplanes)**\n\nSet slice point. Geometries will be hidden relative to this point based on slice planes specified by [setSlicePlanes](#setsliceplanes).\n\n##### Parameters\n\n-   `slicePoint` **THREE.Vector3** \\-- Slice point\n\n##### Examples\n\n```javascript\nconst slicePoint = new THREE.Vector3(1, 0, 0);\nviewer.setSlicePoint(slicePoint);\n```\n\n#### setSlicePlanes\n\n-   **See: [setSlicePoint](#setslicepoint)**\n\nSet slice planes. Each component controls slicing for its direction.\nA value of +1 hides geometries in the positive direction relative to slicePoint.\nA value of -1 hides geometries in the negative direction relative to slicePoint.\nA value of 0 disables slicing for that plane.\n\n##### Parameters\n\n-   `slicePlanes` **THREE.Vector3** \\-- Slice plane information\n\n##### Examples\n\n```javascript\n// Hide geometries with larger z-component than slicePoint. No slicing in x and y.\nconst slicePlanes = new THREE.Vector3(0, 0, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with smaller x-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(-1, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with larger x,y and z-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(1, 1, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Disable slicing.\nconst slicePlanes = new THREE.Vector3(0, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the canvas)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the canvas)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and its state\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize then this can help avoid an API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n-   `matrix` **THREE.Matrix4?** \\-- Optional transformation matrix. If not specified, identity matrix is used and bounding box will be in local space of the model.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox, model.matrix); // world space\n// box === reusableBox\n```\n\n```javascript\nmodel.updateMatrixWorld();\nconst reusableBox = new THREE.Box3();\nconst matrix = model.matrixWorld;\nconst box = model.getBoundingBox(nodeId, reusableBox, matrix);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n#### showNode\n\nShow a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes\n\n#### hideAllNodes\n\nHide all nodes\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n### getNode\n\nGet a single node.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the node to retrieve.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Node](#node)>** \n\n### Node\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `id` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id\n-   `treeIndex` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The tree index\n-   `parentId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id of the parent\n-   `name` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The name of the node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Size of the subtree where this node is the root. This number included the node it self.\n-   `depth` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The depth level from the overall root node (0-indexed).\n-   `boundingBox` **THREE.Box3** \\-- The bounding box for the subtree where this node is the root.\n\n### AssetMapping\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id for the mapping\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The mapped asset id\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Size of the subtree with the node with id = nodeId as root\n\n### getAssetMappingsFromNodeId\n\nGet the assets associated with a given node.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the node to get the associated assets of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[AssetMapping](#assetmapping)]>** \n\n### getAssetMappingsFromAssetId\n\nGet the node ids associated with a given asset.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the asset to get the associated nodes of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[AssetMapping](#assetmapping)]>** \n\n### getSectorsFromBoundingBox\n\nGet sectors intesecting a bounding box.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `boundingBox` **THREE.Box3** \\-- The bounding box\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[Sector](#sector)]>** A list of sectors intersecting the bounding box\n\n### Sector\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `id` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The sector id\n-   `parentId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The id of the parent sector. Undefined if it is the root sector.\n-   `path` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- A string representing the path from the root sector to this sector. Describes how to traverse the sector tree to get to this sector.\n-   `depth` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The depth level from the root sector (0-indexed).\n-   `threedFileId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- File id for the file describing geometries attached to the sector. Use /3d/files to retrieve it.\n-   `boundingBox` **THREE.Box3** \\-- The bounding box of which the sector covers.\n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"fc114640b4d0064c6893f2914acf42c85742c197","scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.8","fast-filter":"^1.0.4","is-function":"^1.0.1","@cognite/sdk":"^1.4.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.2.0","@cognite/three-combo-controls":"^1.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","babel-plugin-transform-class-properties":"^6.24.1"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.9.0-beta.1_1549278832069_0.95823052701915","host":"s3://npm-registry-packages"}},"3.9.0-beta.2":{"name":"@cognite/3d-viewer","version":"3.9.0-beta.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.9.0-beta.2","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"77c66196c5bb82cf31efb89d0f4e388a371746b3","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.9.0-beta.2.tgz","fileCount":6,"integrity":"sha512-jm+IqMXdgDtI4L/iyQP9ft7JyNgZN04SMZXoX2h8pP0aKChCyYLY6QRLFlyaax4FQac8OWq/6QKrLQw+sifjhw==","signatures":[{"sig":"MEYCIQCvCrwBBCGvqrqlFqsQvOYDutBCwIMLrsUu4v774fsxfgIhALHTyMTAr6CAlwnCxAvnMYy7StnTIls2FOPkob7f13z3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1189538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWEQ7CRA9TVsSAnZWagAA9f4P/3+xqo39yNACSX6yPPxk\nxUeg7h9uJztz517zGXdTG0zyGqFZAETZGcdxnGzZmEQmY3FuIDdMt58DJDuS\ndXWyRc6WS0z76YC+XfcSlo4w1gH/5X90/70rTZ2pKHFQ1rfmK2aDlvgT+cxq\nZLLHYQ2CRN2NffSAB+WQhN3tehbvV6fRlmjvFFewK+rUqbc0CuxNICygXOZK\n4cUag2kPgnZ7KhO3Td2sRYHwrUX67Bd5USqRzO2EPpMGaSF8E4w/eK5vJnbl\ninAweL1/GuC94776X2GPFH8AJy8DnZQwzYHITMo27FumjRFRUHRXmqyqDPF5\n4fOC17xi3/FqrAuN1CrWNva3+3GfyivcRIer07hI6Jr1HnXUdjY6gCJPVCLE\nPjj2jBfd46oxlbrZD8AntP7RbW0tprw6zSMw8V0T2HfeDcw0B2jiwjxWuiBs\nI5ABq0xGK1IIBa37YBdela9fIWwz1+FdHEP7OOYX+CUYU0YBanobY4Pzf7iU\ngM0fK73sjRQRLs1zShyzYdfhXn6qpTArP/HN/JTR8YbXJ8h7HLU1NmEyWPhO\nnRTIbIVe5IsYq8W19A/E0LIHl5YjxAXSCnVN+ZvEy1u6wDSezb17wG5XuoXS\nW9jbIKrM9pZ9iwtxUMlPonDKrB+vT4SFHVs3SIGXZ0JNEa2By0ullgotlZBP\noOOJ\r\n=Qe/N\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite's Data Platform](#cognites-data-platform)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Cognite's Data Platform\n\nTo be able to use this 3D viewer you need to have access to Cognite's Data Platform (CDP). You can upload 3D models to our platform by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application.\n\n## Usage\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\nconst viewer = new Cognite3DViewer();\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n-   [Fetch polyfill](https://github.com/github/fetch) to use in Internet Explorer 11\n\n### Sample code\n\n```js\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case. By default the canvas will have this style:\n>\n> ```css\n> {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId, null, model.matrix);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite's Data Platform which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-2)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-3)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-4)\n    -   [addObject3D](#addobject3d)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-5)\n    -   [removeObject3D](#removeobject3d)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-6)\n    -   [setSlicePoint](#setslicepoint)\n        -   [Parameters](#parameters-6)\n        -   [Examples](#examples-7)\n    -   [setSlicePlanes](#setsliceplanes)\n        -   [Parameters](#parameters-7)\n        -   [Examples](#examples-8)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-9)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-10)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-8)\n        -   [Examples](#examples-11)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-12)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-10)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-11)\n    -   [worldToScreen](#worldtoscreen)\n        -   [Parameters](#parameters-12)\n        -   [Examples](#examples-13)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n        -   [Parameters](#parameters-13)\n        -   [Examples](#examples-14)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-14)\n-   [Intersection](#intersection)\n    -   [Properties](#properties)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n        -   [Parameters](#parameters-15)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-15)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-17)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-18)\n    -   [resetNodeColor](#resetnodecolor)\n        -   [Parameters](#parameters-19)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-20)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-21)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n        -   [Parameters](#parameters-22)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n        -   [Parameters](#parameters-23)\n    -   [hideNode](#hidenode)\n        -   [Parameters](#parameters-24)\n-   [getNode](#getnode)\n    -   [Parameters](#parameters-25)\n-   [Node](#node)\n    -   [Properties](#properties-1)\n-   [AssetMapping](#assetmapping)\n    -   [Properties](#properties-2)\n-   [getAssetMappingsFromNodeId](#getassetmappingsfromnodeid)\n    -   [Parameters](#parameters-26)\n-   [getAssetMappingsFromAssetId](#getassetmappingsfromassetid)\n    -   [Parameters](#parameters-27)\n-   [getSectorsFromBoundingBox](#getsectorsfromboundingbox)\n    -   [Parameters](#parameters-28)\n-   [Sector](#sector)\n    -   [Properties](#properties-3)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-29)\n        -   [Examples](#examples-16)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](#fitcameratomodel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicePoint\n\n-   **See: [setSlicePlanes](#setsliceplanes)**\n\nSet slice point. Geometries will be hidden relative to this point based on slice planes specified by [setSlicePlanes](#setsliceplanes).\n\n##### Parameters\n\n-   `slicePoint` **THREE.Vector3** \\-- Slice point\n\n##### Examples\n\n```javascript\nconst slicePoint = new THREE.Vector3(1, 0, 0);\nviewer.setSlicePoint(slicePoint);\n```\n\n#### setSlicePlanes\n\n-   **See: [setSlicePoint](#setslicepoint)**\n\nSet slice planes. Each component controls slicing for its direction.\nA value of +1 hides geometries in the positive direction relative to slicePoint.\nA value of -1 hides geometries in the negative direction relative to slicePoint.\nA value of 0 disables slicing for that plane.\n\n##### Parameters\n\n-   `slicePlanes` **THREE.Vector3** \\-- Slice plane information\n\n##### Examples\n\n```javascript\n// Hide geometries with larger z-component than slicePoint. No slicing in x and y.\nconst slicePlanes = new THREE.Vector3(0, 0, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with smaller x-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(-1, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with larger x,y and z-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(1, 1, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Disable slicing.\nconst slicePlanes = new THREE.Vector3(0, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the canvas)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the canvas)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and its state\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize then this can help avoid an API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n-   `matrix` **THREE.Matrix4?** \\-- Optional transformation matrix. If not specified, identity matrix is used and bounding box will be in local space of the model.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox, model.matrix); // world space\n// box === reusableBox\n```\n\n```javascript\nmodel.updateMatrixWorld();\nconst reusableBox = new THREE.Box3();\nconst matrix = model.matrixWorld;\nconst box = model.getBoundingBox(nodeId, reusableBox, matrix);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n#### showNode\n\nShow a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes\n\n#### hideAllNodes\n\nHide all nodes\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n### getNode\n\nGet a single node.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the node to retrieve.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Node](#node)>** \n\n### Node\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `id` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id\n-   `treeIndex` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The tree index\n-   `parentId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id of the parent\n-   `name` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The name of the node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Size of the subtree where this node is the root. This number included the node it self.\n-   `depth` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The depth level from the overall root node (0-indexed).\n-   `boundingBox` **THREE.Box3** \\-- The bounding box for the subtree where this node is the root.\n\n### AssetMapping\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id for the mapping\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The mapped asset id\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Size of the subtree with the node with id = nodeId as root\n\n### getAssetMappingsFromNodeId\n\nGet the assets associated with a given node.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the node to get the associated assets of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[AssetMapping](#assetmapping)]>** \n\n### getAssetMappingsFromAssetId\n\nGet the node ids associated with a given asset.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the asset to get the associated nodes of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[AssetMapping](#assetmapping)]>** \n\n### getSectorsFromBoundingBox\n\nGet sectors intesecting a bounding box.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `boundingBox` **THREE.Box3** \\-- The bounding box\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[Sector](#sector)]>** A list of sectors intersecting the bounding box\n\n### Sector\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `id` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The sector id\n-   `parentId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The id of the parent sector. Undefined if it is the root sector.\n-   `path` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- A string representing the path from the root sector to this sector. Describes how to traverse the sector tree to get to this sector.\n-   `depth` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The depth level from the root sector (0-indexed).\n-   `threedFileId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- File id for the file describing geometries attached to the sector. Use /3d/files to retrieve it.\n-   `boundingBox` **THREE.Box3** \\-- The bounding box of which the sector covers.\n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"f0751f7f163c16b3a683059f8e0e57c7789e09e2","scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.8","fast-filter":"^1.0.4","is-function":"^1.0.1","@cognite/sdk":"^1.4.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.2.0","@cognite/three-combo-controls":"^1.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","babel-plugin-transform-class-properties":"^6.24.1"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.9.0-beta.2_1549288506727_0.7810314818123498","host":"s3://npm-registry-packages"}},"3.9.0-beta.3":{"name":"@cognite/3d-viewer","version":"3.9.0-beta.3","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.9.0-beta.3","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"5425660b51459f9d8f309a62d12973e3cedfeb90","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.9.0-beta.3.tgz","fileCount":6,"integrity":"sha512-56qNHIU0eTZvnkTqlqUU4kAJxO3fMlyiCSQoCUuVPOtkvCG/L0ftnvFyIdgpqXa2OiZy+/hRGzFeqUe+nPj7OA==","signatures":[{"sig":"MEQCIFWi5U47Zpynxl5AmZKoAkhvWGlRlV9L/08YMrU+5CFPAiBCVXpRa5NoAmmmogf6ADSoKACnG5csLFA1/rqkPihVHg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1197781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWXrMCRA9TVsSAnZWagAAKQQP/2twHHIaT9FfQ38SF5rM\nQa8ygjDWx+qY7JK0P2AXbcE67upPhABn4ib/0Q80mwZOvWqxm4xbOWguC5DH\nJQDcj83QUpwAgla2XIPs0s2ViMWrc0WdZIk4XAfZDrupRME2uPVrBxKXTWeU\nybpnbFLcuPiDcwL4mdQwO1LIW5CfBGu7xz6F8pA+ZjxyXSO0rq9oRNjb0cy0\nrhNgcr1BZ7VeriZ24ye6yG+o3vXES66B1cd1QkdDI6vlM2MUyTf6BBbImgIo\n28LZTHXYLLMZygvJxLG7OI6mohC6nRgM6iTu5s1fgA7vsStFa8bRGAT+2G8/\nC3RAi+5ilpO1bTKuH3kVz+XdJn/F/bwVYzuB+AhE/Rg6Ysh42Kx0TUTe2bvs\nrlfiXxFgHXPsZoT5LZPFOxAsAAPTvPYUFRl3RTluGv93YjDJMIhv7NuTvA5w\nRMmcoetbALokNI/ixitR28sNdk9FRwVIA2ul6FoWVCRhJsY44ApPdgswmNdq\n9wxHHVC9UaWfjSfDUSUL3vXR5jM1JnQjA9fdpjyVcFvjlCJ5jAMuo4B0POSk\n+DkysJOXAMy2xivipMBEvXTT9ZecEJoB37xbj+vItS1T3l8oeCQqSkcxhDby\nJu5LJc4JIeLUFF4NodTuyhc6jPZiLocLobjmqx8j1M2fN7Kituzz3UoG6FH0\nUwnk\r\n=6M3i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite's Data Platform](#cognites-data-platform)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Cognite's Data Platform\n\nTo be able to use this 3D viewer you need to have access to Cognite's Data Platform (CDP). You can upload 3D models to our platform by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application.\n\n## Usage\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\nconst viewer = new Cognite3DViewer();\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n-   [Fetch polyfill](https://github.com/github/fetch) to use in Internet Explorer 11\n\n### Sample code\n\n```js\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case. By default the canvas will have this style:\n>\n> ```css\n> {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId, null, model.matrix);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite's Data Platform which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-2)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-3)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-4)\n    -   [addObject3D](#addobject3d)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-5)\n    -   [removeObject3D](#removeobject3d)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-6)\n    -   [setSlicePoint](#setslicepoint)\n        -   [Parameters](#parameters-6)\n        -   [Examples](#examples-7)\n    -   [setSlicePlanes](#setsliceplanes)\n        -   [Parameters](#parameters-7)\n        -   [Examples](#examples-8)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-9)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-10)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-8)\n        -   [Examples](#examples-11)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-12)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-10)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-11)\n    -   [worldToScreen](#worldtoscreen)\n        -   [Parameters](#parameters-12)\n        -   [Examples](#examples-13)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n        -   [Parameters](#parameters-13)\n        -   [Examples](#examples-14)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-14)\n-   [Intersection](#intersection)\n    -   [Properties](#properties)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n        -   [Parameters](#parameters-15)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-15)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-17)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-18)\n    -   [resetNodeColor](#resetnodecolor)\n        -   [Parameters](#parameters-19)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-20)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-21)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n        -   [Parameters](#parameters-22)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n        -   [Parameters](#parameters-23)\n    -   [hideNode](#hidenode)\n        -   [Parameters](#parameters-24)\n-   [getNode](#getnode)\n    -   [Parameters](#parameters-25)\n-   [Node](#node)\n    -   [Properties](#properties-1)\n-   [AssetMapping](#assetmapping)\n    -   [Properties](#properties-2)\n-   [getAssetMappingsFromNodeId](#getassetmappingsfromnodeid)\n    -   [Parameters](#parameters-26)\n-   [getAssetMappingsFromAssetId](#getassetmappingsfromassetid)\n    -   [Parameters](#parameters-27)\n-   [getSectorsFromBoundingBox](#getsectorsfromboundingbox)\n    -   [Parameters](#parameters-28)\n-   [Sector](#sector)\n    -   [Properties](#properties-3)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-29)\n        -   [Examples](#examples-16)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](#fitcameratomodel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicePoint\n\n-   **See: [setSlicePlanes](#setsliceplanes)**\n\nSet slice point. Geometries will be hidden relative to this point based on slice planes specified by [setSlicePlanes](#setsliceplanes).\n\n##### Parameters\n\n-   `slicePoint` **THREE.Vector3** \\-- Slice point\n\n##### Examples\n\n```javascript\nconst slicePoint = new THREE.Vector3(1, 0, 0);\nviewer.setSlicePoint(slicePoint);\n```\n\n#### setSlicePlanes\n\n-   **See: [setSlicePoint](#setslicepoint)**\n\nSet slice planes. Each component controls slicing for its direction.\nA value of +1 hides geometries in the positive direction relative to slicePoint.\nA value of -1 hides geometries in the negative direction relative to slicePoint.\nA value of 0 disables slicing for that plane.\n\n##### Parameters\n\n-   `slicePlanes` **THREE.Vector3** \\-- Slice plane information\n\n##### Examples\n\n```javascript\n// Hide geometries with larger z-component than slicePoint. No slicing in x and y.\nconst slicePlanes = new THREE.Vector3(0, 0, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with smaller x-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(-1, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with larger x,y and z-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(1, 1, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Disable slicing.\nconst slicePlanes = new THREE.Vector3(0, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the canvas)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the canvas)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and its state\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize then this can help avoid an API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n-   `matrix` **THREE.Matrix4?** \\-- Optional transformation matrix. If not specified, identity matrix is used and bounding box will be in local space of the model.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox, model.matrix); // world space\n// box === reusableBox\n```\n\n```javascript\nmodel.updateMatrixWorld();\nconst reusableBox = new THREE.Box3();\nconst matrix = model.matrixWorld;\nconst box = model.getBoundingBox(nodeId, reusableBox, matrix);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n#### showNode\n\nShow a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes\n\n#### hideAllNodes\n\nHide all nodes\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n### getNode\n\nGet a single node.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the node to retrieve.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Node](#node)>** \n\n### Node\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `id` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id\n-   `treeIndex` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The tree index\n-   `parentId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id of the parent\n-   `name` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The name of the node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Size of the subtree where this node is the root. This number included the node it self.\n-   `depth` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The depth level from the overall root node (0-indexed).\n-   `boundingBox` **THREE.Box3** \\-- The bounding box for the subtree where this node is the root.\n\n### AssetMapping\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id for the mapping\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The mapped asset id\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Size of the subtree with the node with id = nodeId as root\n\n### getAssetMappingsFromNodeId\n\nGet the assets associated with a given node.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the node to get the associated assets of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[AssetMapping](#assetmapping)]>** \n\n### getAssetMappingsFromAssetId\n\nGet the node ids associated with a given asset.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the asset to get the associated nodes of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[AssetMapping](#assetmapping)]>** \n\n### getSectorsFromBoundingBox\n\nGet sectors intesecting a bounding box.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `boundingBox` **THREE.Box3** \\-- The bounding box\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[Sector](#sector)]>** A list of sectors intersecting the bounding box\n\n### Sector\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `id` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The sector id\n-   `parentId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The id of the parent sector. Undefined if it is the root sector.\n-   `path` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- A string representing the path from the root sector to this sector. Describes how to traverse the sector tree to get to this sector.\n-   `depth` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The depth level from the root sector (0-indexed).\n-   `threedFileId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- File id for the file describing geometries attached to the sector. Use /3d/files to retrieve it.\n-   `boundingBox` **THREE.Box3** \\-- The bounding box of which the sector covers.\n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"fbf451dc18970ff3ac3ef35b21b806b754a10ba8","scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.8","fast-filter":"^1.0.4","is-function":"^1.0.1","@cognite/sdk":"^1.4.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.5.0","@cognite/three-combo-controls":"^1.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","babel-plugin-transform-class-properties":"^6.24.1"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.9.0-beta.3_1549368011379_0.2081833713781167","host":"s3://npm-registry-packages"}},"3.9.0-beta.4":{"name":"@cognite/3d-viewer","version":"3.9.0-beta.4","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@3.9.0-beta.4","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"988269999e18a9a9f83b774969bd63c1ae9184d5","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-3.9.0-beta.4.tgz","fileCount":6,"integrity":"sha512-KhXk4/Ivgg+zh99ckYKZxUjxxpswxG44/5V98OAIexkEKvjP2HgM+sDCDNRMMF755TRn5smPmPygRxRc9Kztew==","signatures":[{"sig":"MEYCIQDJQOwlzAHQ7+nw13yma4feghuh503M7zGPxk+Lt2pzLQIhAOe5v41/Tu5EA+p2CntQ8loXma7JGdJ4A22giWQUN1Nb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1198741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWen/CRA9TVsSAnZWagAA4qAP/0cmrIjyrIPeBykqOcH1\nP8uVmpvmYCrK0+vGNqmFHsywoft8QE0BjtuzrCSD/1zSyidx+E8fRumIdMgg\nPZPl0qhd18rYU7BSZRrlwLaKPhxfrQVHSm/AKHgM/N1TrhK147jeWbl9D0QA\n9IQMc4kNvSf0Sj+kfvjIj6a4K7XjYH8b3JId67Hv38V01bcHuqqVHjLAcrl0\nnKBCdOLrxGYwC+IgBU2Vf46Vch4vEbAQUgIhpkYt3pWyY0UsVLzHNURWaINI\nno8V5qvucw/sAEefiM6aL/ydw7+9InpQVBTwIl1fSRkSi7YEwSLaW/5XhuMw\nVWCqpXOkyt66pI2aDbQ0LQzv6IdLkOVduUo7yvrKPe/ev+zKeb7aezyKD+Th\n164zW1cvV5rCA+ZtRGk3zblxZxv/nqJe9b3rGldNKf67qgIjhMKHlB0xJS1T\n4iU9XwI7gda6abm3YwR6c4sMlLGYMdTqGIhRMa7VlZs2bmabshWo0tbVAV5M\ntICG2v9lUO0A7RvGdPb88beXhKbvLNUM6idgm5xnmNNLwwnW3ZIBcv/3mtqB\nV+mHggZPZvMWAocM3YpzpW36gHyBtBs6bikCTU7O1bVnE/74q14mFWIbGOvY\nK73Z0uz6k3sn4MLiVwhJGcmAz6wQ6V0W8gbieN2ZObX9cX0NlF/+m4D+wnxR\ngci4\r\n=3cBz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite's Data Platform](#cognites-data-platform)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Cognite's Data Platform\n\nTo be able to use this 3D viewer you need to have access to Cognite's Data Platform (CDP). You can upload 3D models to our platform by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application.\n\n## Usage\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\nconst viewer = new Cognite3DViewer();\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n-   [Fetch polyfill](https://github.com/github/fetch) to use in Internet Explorer 11\n\n### Sample code\n\n```js\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case. By default the canvas will have this style:\n>\n> ```css\n> {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId, null, model.matrix);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite's Data Platform which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-2)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-3)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-4)\n    -   [addObject3D](#addobject3d)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-5)\n    -   [removeObject3D](#removeobject3d)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-6)\n    -   [setSlicePoint](#setslicepoint)\n        -   [Parameters](#parameters-6)\n        -   [Examples](#examples-7)\n    -   [setSlicePlanes](#setsliceplanes)\n        -   [Parameters](#parameters-7)\n        -   [Examples](#examples-8)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-9)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-10)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-8)\n        -   [Examples](#examples-11)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-12)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-10)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-11)\n    -   [worldToScreen](#worldtoscreen)\n        -   [Parameters](#parameters-12)\n        -   [Examples](#examples-13)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n        -   [Parameters](#parameters-13)\n        -   [Examples](#examples-14)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-14)\n-   [Intersection](#intersection)\n    -   [Properties](#properties)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n        -   [Parameters](#parameters-15)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-15)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-17)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-18)\n    -   [resetNodeColor](#resetnodecolor)\n        -   [Parameters](#parameters-19)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-20)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-21)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n        -   [Parameters](#parameters-22)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n        -   [Parameters](#parameters-23)\n    -   [hideNode](#hidenode)\n        -   [Parameters](#parameters-24)\n-   [getNode](#getnode)\n    -   [Parameters](#parameters-25)\n-   [Node](#node)\n    -   [Properties](#properties-1)\n-   [AssetMapping](#assetmapping)\n    -   [Properties](#properties-2)\n-   [getAssetMappingsFromNodeId](#getassetmappingsfromnodeid)\n    -   [Parameters](#parameters-26)\n-   [getAssetMappingsFromAssetId](#getassetmappingsfromassetid)\n    -   [Parameters](#parameters-27)\n-   [getSectorsFromBoundingBox](#getsectorsfromboundingbox)\n    -   [Parameters](#parameters-28)\n-   [Sector](#sector)\n    -   [Properties](#properties-3)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-29)\n        -   [Examples](#examples-16)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](#fitcameratomodel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicePoint\n\n-   **See: [setSlicePlanes](#setsliceplanes)**\n\nSet slice point. Geometries will be hidden relative to this point based on slice planes specified by [setSlicePlanes](#setsliceplanes).\n\n##### Parameters\n\n-   `slicePoint` **THREE.Vector3** \\-- Slice point\n\n##### Examples\n\n```javascript\nconst slicePoint = new THREE.Vector3(1, 0, 0);\nviewer.setSlicePoint(slicePoint);\n```\n\n#### setSlicePlanes\n\n-   **See: [setSlicePoint](#setslicepoint)**\n\nSet slice planes. Each component controls slicing for its direction.\nA value of +1 hides geometries in the positive direction relative to slicePoint.\nA value of -1 hides geometries in the negative direction relative to slicePoint.\nA value of 0 disables slicing for that plane.\n\n##### Parameters\n\n-   `slicePlanes` **THREE.Vector3** \\-- Slice plane information\n\n##### Examples\n\n```javascript\n// Hide geometries with larger z-component than slicePoint. No slicing in x and y.\nconst slicePlanes = new THREE.Vector3(0, 0, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with smaller x-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(-1, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with larger x,y and z-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(1, 1, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Disable slicing.\nconst slicePlanes = new THREE.Vector3(0, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the canvas)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the canvas)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and its state\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize then this can help avoid an API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n-   `matrix` **THREE.Matrix4?** \\-- Optional transformation matrix. If not specified, identity matrix is used and bounding box will be in local space of the model.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox, model.matrix); // world space\n// box === reusableBox\n```\n\n```javascript\nmodel.updateMatrixWorld();\nconst reusableBox = new THREE.Box3();\nconst matrix = model.matrixWorld;\nconst box = model.getBoundingBox(nodeId, reusableBox, matrix);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n#### showNode\n\nShow a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes\n\n#### hideAllNodes\n\nHide all nodes\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n### getNode\n\nGet a single node.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the node to retrieve.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Node](#node)>** \n\n### Node\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `id` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id\n-   `treeIndex` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The tree index\n-   `parentId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id of the parent\n-   `name` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The name of the node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Size of the subtree where this node is the root. This number included the node it self.\n-   `depth` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The depth level from the overall root node (0-indexed).\n-   `boundingBox` **THREE.Box3** \\-- The bounding box for the subtree where this node is the root.\n\n### AssetMapping\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node id for the mapping\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The mapped asset id\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Size of the subtree with the node with id = nodeId as root\n\n### getAssetMappingsFromNodeId\n\nGet the assets associated with a given node.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the node to get the associated assets of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[AssetMapping](#assetmapping)]>** \n\n### getAssetMappingsFromAssetId\n\nGet the node ids associated with a given asset.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `assetId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the asset to get the associated nodes of\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[AssetMapping](#assetmapping)]>** \n\n### getSectorsFromBoundingBox\n\nGet sectors intesecting a bounding box.\n\n#### Parameters\n\n-   `projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project that the 3D model belongs to\n-   `modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model\n-   `revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the 3D model revision\n-   `boundingBox` **THREE.Box3** \\-- The bounding box\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;\\[[Sector](#sector)]>** A list of sectors intersecting the bounding box\n\n### Sector\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `id` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The sector id\n-   `parentId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The id of the parent sector. Undefined if it is the root sector.\n-   `path` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- A string representing the path from the root sector to this sector. Describes how to traverse the sector tree to get to this sector.\n-   `depth` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The depth level from the root sector (0-indexed).\n-   `threedFileId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- File id for the file describing geometries attached to the sector. Use /3d/files to retrieve it.\n-   `boundingBox` **THREE.Box3** \\-- The bounding box of which the sector covers.\n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"3893e9a2d336bc8f04e6a3ec1ebf62d026aeb4aa","scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.8","fast-filter":"^1.0.4","is-function":"^1.0.1","@cognite/sdk":"^1.4.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.6.0","@cognite/three-combo-controls":"^1.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","babel-plugin-transform-class-properties":"^6.24.1"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_3.9.0-beta.4_1549396478473_0.39344268705560315","host":"s3://npm-registry-packages"}},"4.0.0-beta.1":{"name":"@cognite/3d-viewer","version":"4.0.0-beta.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@4.0.0-beta.1","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"ef737cc0ed6a3697a8a51b0ca3cfa6d10a487355","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-4.0.0-beta.1.tgz","fileCount":6,"integrity":"sha512-nuHDxqPGjCJY7SVDE5sj+RizhPYi4n4TyzVJUb3F+wX3CMRUXvgEP9szDFVnoNqB0WSyDwwZbqebedSp9AVH4Q==","signatures":[{"sig":"MEYCIQDiyMOwSt5Zr3tNtjiQwQln6naUXBgPZPcKAK3RUBSBUgIhALdwT7qOBaTvDxTJM24uAiQEICdV1axYHgjm2d+dLM3C","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1187877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbQThCRA9TVsSAnZWagAAsfAP/0N2VrUyfHjbcD4Ghpnv\nJ1VTYPtP7qKK0RBsBuP/qR5gvDNYgStEulq/PKoHVwoAvZAl9Khs8ZMrsk2Y\nNmRAIUlAVsNArnQ+Bv9znF+zPpu07qaRHLi+NtbmzhT1q64Sd36G1TTJnyW2\nFS5p+T5SHp8sjgKXcx5UICK4lX3WQF7k5DMgzTNfTnnr/9lCx0fMen7p/NeQ\nVK35uVyVOY9+GJNeSF4k2LRDPXZGT6ZprMTvGsP4LfDPzU5T4CkuT7ZYlDeX\nIASk3RvHR2OpQ1U4G3B9z9eW8tNT4h41nyHzAjrSX7DA4dQjK6O1z5i+dF1A\nH3r9uZlQjKjoxIV9uisFtoNRz9BT0o0AKoC9naMPE3w8lFKzoolnq+ox+K4D\nvd2m6YSMRAYTWus2HXZ+QUFsm6sg7PzYMwjMwuciyyqpCiXLoBNgpadsIcaU\ne87F2JWhFb2HFXkPyrVWEojcv3PAZYDTP7Kek0/e1iQ7ZDEr9v9esl6UwP0E\neqIMniYZHBWzFm5AvJfOMy9EZ+hvXBIKQpwaUFzAoSWLcOeyxzzZY6wdjUL8\nPZXEMsYgBTBpRSJ7w2iCXZcoraOOe8nUkxZ5vYiaogPMii3c18akt7hX9fSM\n4DJSPF9aiNtr4qs5z9pUdpOgUpGpztZLQCOfJYsXv/xCD+EE0F+kDsl6SaI+\nqcHo\r\n=CAI8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite's Data Platform](#cognites-data-platform)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Cognite's Data Platform\n\nTo be able to use this 3D viewer you need to have access to Cognite's Data Platform (CDP). You can upload 3D models to our platform by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application.\n\n## Usage\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case. By default the canvas will have this style:\n>\n> ```css\n> {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId, null, model.matrix);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite's Data Platform which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-2)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-3)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-4)\n    -   [addObject3D](#addobject3d)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-5)\n    -   [removeObject3D](#removeobject3d)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-6)\n    -   [setSlicePoint](#setslicepoint)\n        -   [Parameters](#parameters-6)\n        -   [Examples](#examples-7)\n    -   [setSlicePlanes](#setsliceplanes)\n        -   [Parameters](#parameters-7)\n        -   [Examples](#examples-8)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-9)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-10)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-8)\n        -   [Examples](#examples-11)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-12)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-10)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-11)\n    -   [worldToScreen](#worldtoscreen)\n        -   [Parameters](#parameters-12)\n        -   [Examples](#examples-13)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n        -   [Parameters](#parameters-13)\n        -   [Examples](#examples-14)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-14)\n-   [Intersection](#intersection)\n    -   [Properties](#properties)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n        -   [Parameters](#parameters-15)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-15)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-17)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-18)\n    -   [resetNodeColor](#resetnodecolor)\n        -   [Parameters](#parameters-19)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-20)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-21)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n        -   [Parameters](#parameters-22)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n        -   [Parameters](#parameters-23)\n    -   [hideNode](#hidenode)\n        -   [Parameters](#parameters-24)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-25)\n        -   [Examples](#examples-16)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](#fitcameratomodel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicePoint\n\n-   **See: [setSlicePlanes](#setsliceplanes)**\n\nSet slice point. Geometries will be hidden relative to this point based on slice planes specified by [setSlicePlanes](#setsliceplanes).\n\n##### Parameters\n\n-   `slicePoint` **THREE.Vector3** \\-- Slice point\n\n##### Examples\n\n```javascript\nconst slicePoint = new THREE.Vector3(1, 0, 0);\nviewer.setSlicePoint(slicePoint);\n```\n\n#### setSlicePlanes\n\n-   **See: [setSlicePoint](#setslicepoint)**\n\nSet slice planes. Each component controls slicing for its direction.\nA value of +1 hides geometries in the positive direction relative to slicePoint.\nA value of -1 hides geometries in the negative direction relative to slicePoint.\nA value of 0 disables slicing for that plane.\n\n##### Parameters\n\n-   `slicePlanes` **THREE.Vector3** \\-- Slice plane information\n\n##### Examples\n\n```javascript\n// Hide geometries with larger z-component than slicePoint. No slicing in x and y.\nconst slicePlanes = new THREE.Vector3(0, 0, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with smaller x-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(-1, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with larger x,y and z-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(1, 1, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Disable slicing.\nconst slicePlanes = new THREE.Vector3(0, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the canvas)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the canvas)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and its state\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize then this can help avoid an API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n-   `matrix` **THREE.Matrix4?** \\-- Optional transformation matrix. If not specified, identity matrix is used and bounding box will be in local space of the model.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox, model.matrix); // world space\n// box === reusableBox\n```\n\n```javascript\nmodel.updateMatrixWorld();\nconst reusableBox = new THREE.Box3();\nconst matrix = model.matrixWorld;\nconst box = model.getBoundingBox(nodeId, reusableBox, matrix);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n#### showNode\n\nShow a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes\n\n#### hideAllNodes\n\nHide all nodes\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/three-combo-controls":"^1.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.4.8","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_4.0.0-beta.1_1550648544852_0.3392240420741903","host":"s3://npm-registry-packages"}},"4.0.0-beta.2":{"name":"@cognite/3d-viewer","version":"4.0.0-beta.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@4.0.0-beta.2","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"15859f2513532f9448500825ed029209359fadd3","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-4.0.0-beta.2.tgz","fileCount":6,"integrity":"sha512-tgJXr+YLbqIAmCkN/ZkG+jknQFuv5lvIvo7g3h4XFivnxR/OmBLOxOV1mHSIy8+6NLCyBgPYsCd5vQDD9PAp3A==","signatures":[{"sig":"MEYCIQDKf6RZ89Ij7/B+Sghrgfdm/CvcquOIK0R0mUMdBs1AuAIhAKzGjMGiSFgD2iqFyIbVdR/BkMjch8Lf8xXMQFgsKBVq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1187655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbQuZCRA9TVsSAnZWagAALdAP/3k8Rtglt1eaGyIVfqPY\nhrtl/CuiOBKW6VssTDdNPKVr3QcbImqvXG4r5ZeEvyImq3Ljqb0biXIX4yUg\nq7w+Z9kNnN5/REb4olCyva5sOycZejU8r8D51XUygweyQWpIxOks0pWKZ81N\nFDVzLqEyl7yUonrp6wLeMvJSoUsXLsCV4YBiMYCxm2+MApju3YlOw+0FcA6D\nmoR3T5qy0fGFoueVYhHhIFxCE1PEzr43zlMQzsWHwcgaJ2PT2G+8giGZhONt\nZ5vGwDgeD79rGVPfsDKXMFdSYP0Lmg2sLlsx594G2UTlkQh0/jl2thVxAVxY\n+1nbAiq+tXuc73qnE4q/vbtQ2UL5ORWfXQLhHjFmKG/XrFAdZceoaKmLjblE\nZy3/V2uINrXSDw2DCnSmdbb5HFVdM9mviXEu2pHMEbnCCy5BzyHJY7Y/N6Bv\nU4xOI77hW7aR4xXdZ+qB0RsCJVayKgNbuhkcZKsihTyy1LCJoWrU17EED6zu\n1SJ46tFSTPt3y0jN8Vpol4WLy2EYTD+7CZkPSzbIttX7o0y1wARDzGrOJDpL\nLSAZ7GK/Hal+TUmtPYEAWfYx75MaDO7phMmwgJLfXNO2kk9dkex2+/letI8F\nAgFqm/W/u3Csw2e1dEemwmOfgR6EIqS+AKUVQq0w8c7vZu/2EL84dVwYEy43\nWdTJ\r\n=TlBH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite's Data Platform](#cognites-data-platform)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\n    $ npm install @cognite/3d-viewer\n\n## Cognite's Data Platform\n\nTo be able to use this 3D viewer you need to have access to Cognite's Data Platform (CDP). You can upload 3D models to our platform by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application.\n\n## Usage\n\n```js\nimport { Cognite3DViewer } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n\n// The viewer will render to a canvas.\n// Add this canvas to your DOM\ndocument.body.appendChild(viewer.canvas);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  projectName, // Project name (tenant) in Cognite's Data Platform\n  modelId,     // 3D model id (has to be under the same project)\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: you may need additional styling to the canvas to make it fit your use-case. By default the canvas will have this style:\n>\n> ```css\n> {\n>   width: 100%;\n>   height: 100%;\n> }\n> ```\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  projectName,\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId, null, model.matrix);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite's Data Platform which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [isSupported](#issupported)\n        -   [Examples](#examples-1)\n    -   [on](#on)\n        -   [Parameters](#parameters-1)\n        -   [Examples](#examples-2)\n    -   [off](#off)\n        -   [Parameters](#parameters-2)\n        -   [Examples](#examples-3)\n    -   [addModel](#addmodel)\n        -   [Parameters](#parameters-3)\n        -   [Examples](#examples-4)\n    -   [addObject3D](#addobject3d)\n        -   [Parameters](#parameters-4)\n        -   [Examples](#examples-5)\n    -   [removeObject3D](#removeobject3d)\n        -   [Parameters](#parameters-5)\n        -   [Examples](#examples-6)\n    -   [setSlicePoint](#setslicepoint)\n        -   [Parameters](#parameters-6)\n        -   [Examples](#examples-7)\n    -   [setSlicePlanes](#setsliceplanes)\n        -   [Parameters](#parameters-7)\n        -   [Examples](#examples-8)\n    -   [getCameraPosition](#getcameraposition)\n        -   [Examples](#examples-9)\n    -   [getCameraTarget](#getcameratarget)\n        -   [Examples](#examples-10)\n    -   [setCameraPosition](#setcameraposition)\n        -   [Parameters](#parameters-8)\n        -   [Examples](#examples-11)\n    -   [setCameraTarget](#setcameratarget)\n        -   [Parameters](#parameters-9)\n        -   [Examples](#examples-12)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n        -   [Parameters](#parameters-10)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n        -   [Parameters](#parameters-11)\n    -   [worldToScreen](#worldtoscreen)\n        -   [Parameters](#parameters-12)\n        -   [Examples](#examples-13)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n        -   [Parameters](#parameters-13)\n        -   [Examples](#examples-14)\n    -   [getScreenshot](#getscreenshot)\n        -   [Parameters](#parameters-14)\n-   [Intersection](#intersection)\n    -   [Properties](#properties)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n        -   [Parameters](#parameters-15)\n    -   [getBoundingBox](#getboundingbox)\n        -   [Parameters](#parameters-16)\n        -   [Examples](#examples-15)\n    -   [getNodeColor](#getnodecolor)\n        -   [Parameters](#parameters-17)\n    -   [setNodeColor](#setnodecolor)\n        -   [Parameters](#parameters-18)\n    -   [resetNodeColor](#resetnodecolor)\n        -   [Parameters](#parameters-19)\n    -   [selectNode](#selectnode)\n        -   [Parameters](#parameters-20)\n    -   [deselectNode](#deselectnode)\n        -   [Parameters](#parameters-21)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n        -   [Parameters](#parameters-22)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n        -   [Parameters](#parameters-23)\n    -   [hideNode](#hidenode)\n        -   [Parameters](#parameters-24)\n-   [Cognite3DModelLoader](#cognite3dmodelloader)\n    -   [load](#load)\n        -   [Parameters](#parameters-25)\n        -   [Examples](#examples-16)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Transparent background or not (optional, default `false`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### isSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!viewer.isSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer.\ncall [fitCameraToModel](#fitcameratomodel) to see the model after the model has loaded\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** \n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicePoint\n\n-   **See: [setSlicePlanes](#setsliceplanes)**\n\nSet slice point. Geometries will be hidden relative to this point based on slice planes specified by [setSlicePlanes](#setsliceplanes).\n\n##### Parameters\n\n-   `slicePoint` **THREE.Vector3** \\-- Slice point\n\n##### Examples\n\n```javascript\nconst slicePoint = new THREE.Vector3(1, 0, 0);\nviewer.setSlicePoint(slicePoint);\n```\n\n#### setSlicePlanes\n\n-   **See: [setSlicePoint](#setslicepoint)**\n\nSet slice planes. Each component controls slicing for its direction.\nA value of +1 hides geometries in the positive direction relative to slicePoint.\nA value of -1 hides geometries in the negative direction relative to slicePoint.\nA value of 0 disables slicing for that plane.\n\n##### Parameters\n\n-   `slicePlanes` **THREE.Vector3** \\-- Slice plane information\n\n##### Examples\n\n```javascript\n// Hide geometries with larger z-component than slicePoint. No slicing in x and y.\nconst slicePlanes = new THREE.Vector3(0, 0, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with smaller x-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(-1, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Hide geometries with larger x,y and z-component than slicePoint.\nconst slicePlanes = new THREE.Vector3(1, 1, 1);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n```javascript\n// Disable slicing.\nconst slicePlanes = new THREE.Vector3(0, 0, 0);\nviewer.setSlicePlanes(slicePlanes);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The the ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId, null, model.matrix).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the canvas)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the canvas)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class represeting a Cognite 3D model and its state\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize then this can help avoid an API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n-   `matrix` **THREE.Matrix4?** \\-- Optional transformation matrix. If not specified, identity matrix is used and bounding box will be in local space of the model.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox, model.matrix); // world space\n// box === reusableBox\n```\n\n```javascript\nmodel.updateMatrixWorld();\nconst reusableBox = new THREE.Box3();\nconst matrix = model.matrixWorld;\nconst box = model.getBoundingBox(nodeId, reusableBox, matrix);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** \n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected\n\n#### showNode\n\nShow a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes\n\n#### hideAllNodes\n\nHide all nodes\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n### Cognite3DModelLoader\n\n`Cognite3DModelLoader` is the class used to load a Cognite 3D model to Three.js.\n\n#### load\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.projectName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- The Cognite project the 3D model belongs to\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.boundingBox` **THREE.Box3?** \\-- Only load geometries inside this bounding box\n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\nconst options = {\n  projectName: 'COGNITE_TENANT_NAME',\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nCognite3DModelLoader.load(options).then(model => {\n  // if we have a THREE.Scene then:\n  scene.add(model);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/three-combo-controls":"^1.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.4.8","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_4.0.0-beta.2_1550650264782_0.5142975799576828","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"@cognite/3d-viewer","version":"4.0.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@4.0.1","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"7005072483657f4b18095396c73c547e1074af7a","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-4.0.1.tgz","fileCount":6,"integrity":"sha512-r2sRarImcfVLw5EjpYiry+Zdcd5p3Fi82Wq6cs8GHXrNUtCmRzVvj2asr3EoxrD/S8yBt/dGQk277AojIUMprA==","signatures":[{"sig":"MEYCIQCh76bkIHOFwA1thvz/n18wdkvn3qZR9JsIocFeVAiFhgIhAJYzwlohyImNyoGyigeZM+Q2IUBTuHLj48hqhy4ZDvj2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1187344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbTESCRA9TVsSAnZWagAA57EP+wT/v5YMkeLwCaKt/5hb\n0Xb1f+3vfARODFxtIkFQy0SLzcwkdWzdWC564CRsX4HYpTK6WGVmXaKGpuNR\nunQ5+TBj39WcRz7Ed/YvljV7Pjq2llJEX4OyewHJPJE09kmk6In1Jyqf5St/\nTVNjAIIZwdlXHRqmaxeaJTMasCwOdv1dr6tdnfoMtaISadSu7/I3upIuKz00\npVBJJqVhYfBBy2K304gAxqdGbolaMvoOvj6bxezFvFvGDOO6JHeYD29Ryrb9\niUlSoMkYxQjvoZdPg+6jEJadfPzzzRbRJ+JquiQmOlF4XHN46ztm1SH3FK5c\nehgR7/TZyvPOQRvUGJ9RD1qVxInqBY2h7iDcB/H4mpEi+Ai2Gcq5o/85V7wP\nKuYc17+546MclA26JDOWVH0K/6iiI2MM9gnFAe+bJ3A7ejlSl2FwpK3wS2qY\n5ApDyraZOfAMUMKZgedLr5nUOV95KtyRiBgkP6pgIdCQ2lMQRPTPauf0ETCr\nsN5Ww7L8bijrcmudaUxt5yCxeomeJh58Qqb43DP8F134z5uqko6oDnFw1lBS\nAs1bh5SLDnziUqpGNG5BSPPsxGVTQHu/CE1Q+YOPIU56m9BaxXTT4+4RyDeQ\ncI2VnwU6+YEfXUjsm7ZDvwJalp0k6Y1IzOOvdp09BV4frZdrPAI9tsl1bumT\nM2ok\r\n=HFWZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","@cognite/sdk":"^1.4.8","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/three-combo-controls":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.4.8","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_4.0.1_1550659857727_0.7526913129746133","host":"s3://npm-registry-packages"}},"4.0.2":{"name":"@cognite/3d-viewer","version":"4.0.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@4.0.2","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"1f9c21b2ac4f4eee92f668001d160d4667fcb6f8","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-4.0.2.tgz","fileCount":6,"integrity":"sha512-h1sqi4HO5FBwNiUy7kQHp8B+3wttDmBZKDoKU8JXFC6fY1ftWSkqtze1mQh48vNMvMeKRUq7ZVpp2yyCl90gsA==","signatures":[{"sig":"MEUCIE9fq+WyORKrYqzLqV+/83zJsWwA6wI6fnt7POq8/nBAAiEA/n0Vl1yZkgHWopP63IrAh1UpbWEB7m6XUoZFOdWRkfA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1187576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbTLsCRA9TVsSAnZWagAArDcP/j4zLuHwsTvZyuZvtwJz\n62NdJWJWAqQHZKSLIn0KCwFgMfIbZRWLGfPVcJDzMGdzHna3GasiVZfrYfuZ\nvl/V/kWOiMC/oR4//jNGsNuhpM1ETRTcoHs+EIxyhZPhOADBkqrFWiFM8Wgf\nkGGnPOWCB8qb41Ght8zRsf8TzWQS5PjxsbB3RoO/f/rHEADR1QFeB0byZy9j\nOt918kiaPIw5+6nc08awE2ogKv9HuPQu6Azb23vKDpMftzx44zm5umYSvL3S\n0/qqNepHthlPDX1TpjVHYmzhQUtmqUyYhOr3lr1UUnva/vu54CasYXdaA+7q\n+Dvx5NnGRMrlZlpOVV0poe/kreiDHJDcvb+dL5LpII/fiLt8ZnGPJuQJ46Wd\nzRJHXQXk8Rk3QYBIKiZqQtO0ELST7NWDIbWHw76++0EnpCME4DUESb5WM96w\nd3q7Hlro76HM23pq61KGcsMIENyFbG/ZM0bZrAhnkoXws13etXYrwxWtJx+7\nZ4mDHGD/L1FuErMplgmuNfp9k+iQhgugmamrcrJm4a2cwuacoleSLbBnTwRC\nS0qmIZEisoxLnMtVr/sJaiEvNgOOl9SMIm2fj+jSWlIvI/0bfhEDCFlum8xW\n4lkHePWX0Rv0vekwMCaIHrpHougL+e4vhIHiGNWzXqI2fBxc9sCsCRo44k48\n5eRd\r\n=uCVg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"8.14.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/three-combo-controls":"^1.2.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.4.8","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_4.0.2_1550660331463_0.6867626567947176","host":"s3://npm-registry-packages"}},"4.0.3":{"name":"@cognite/3d-viewer","version":"4.0.3","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@4.0.3","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"cdfd0882a17f578f631fc61e7b8278e5e6203e4f","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-4.0.3.tgz","fileCount":6,"integrity":"sha512-yGl+aVrSnJkDwg3BJ3rrJ4+iiatpFw1jWk0hJgGJiEb/boGSOTAaLAk+BkzmpCkN3cNLQzSDT6AAM3EICATroA==","signatures":[{"sig":"MEYCIQDsEB+k4gHcujF7A7v9q0y+8U+xktv+SpQRSV6v9KA5oAIhAMn08XW7eDfH07VuuGyLPHmAZjLrUCenQrWNw61xszWz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1187802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcdu5xCRA9TVsSAnZWagAAosAP/iLw02ESsrpCqA0nbbiB\nb/9dp+EcMQ385WhbTGmaH8cDd8Fs4vQ2MVukW+G9RQBsIi+G2puvYTL6m0nm\nuPNeCbVdDJ2PIYtvDyiRFDhfU6Ef2PXaSdHQe6i2ABJ8I1Tn+/eK8h2z3dXY\nlZODfzie+fTt2qwGOncaLNtN1RSlpObobBV91Mc4x9jcFEtVX5eA/s+FY+xb\nC8kI5+4TzYHI1hqg87dljP1U44dIeXaEvRAtLBdvfVoZ+yv8XUQ1SssvSD6a\neGrQtHLltBglx3PMbutrp77v5syYf4UFd6TYq9Qj3QCc+66Lon/OvKogcgaE\nXIiQZGhXtnfiNr2Cqf2qNuUHo08wKNYCDay51U7oOCmIVnZeytZD9PqyJIxv\nh4ySHc5zz42hrVGXFudnVYCY3RFMd6g1f1pCj/z5h/Axd40QzA8IuyYgMaxy\nb0+2+vXyU9koVOcAo+jK3vJa5B2UwzEomj+bBftTXA7mzYtcykn1V2mNlB/T\nV4RJHBrfnLQNodMNUhKmHdc4cIz59SCMhlf8JcXSRzbuljEoY5N4tV3S6JZq\nhy+N9aUM49hkUVQltar6gLYANGxR4Q5i1LG1sCrUwTmMLD4m0jrsXeD/89R0\nT3Kfp+9oH3sXdgzik6m6gxvtyuhKpFlZVzCOPBBcTgp462KEoZZiHuFE7mHH\nfcq5\r\n=eAYm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"6ab7c9806047e3cdb69b405507397f31ab30fd3b","scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/three-combo-controls":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.4.8","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.10","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_4.0.3_1551298160625_0.020999863026776477","host":"s3://npm-registry-packages"}},"4.0.4":{"name":"@cognite/3d-viewer","version":"4.0.4","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@4.0.4","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"1650ab48ddc7a1e122ca64d5b96b07700a0bf88d","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-4.0.4.tgz","fileCount":6,"integrity":"sha512-BR428c4uqQvDSERciOti4CfXEx9W2USmE17ThR/zLaOrj0Kv+jLgTSD7mbnhOXxwX72+W0ozxtaXUaocNU+iRw==","signatures":[{"sig":"MEQCID6/zDfVAyGyD380JSXqDPW7cU7c0q1zS+7KY2aSoSVPAiA8eUqBom6ipr97f+/KbXuDBjZcj+/cxoYO6wJGQP7j4A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1188969,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcevCjCRA9TVsSAnZWagAAxlQP/RO6S86PiAJKQnd8cL2h\ny1vNg30lcUQ+OmYAs1t5YJ0qlTFJJ54KiyU+QErDRbsi0E67+V3IFSNh39Pw\nUrHJiA+cPfrGomXJ1z7ifgYPDWfUlr9Of71LnBLTVXFDIoa/VBX5bR8V66aY\nONFU97iYIGrA4BU3XVWstpO6EwpHBUZT4+n4DEwusQECWXqM09m6W5V2XmPy\nIA9EyvGrVSaCvVIJC9TPhFPVwaEFOq3dFgC+4YDw/BgHzYt87OSVHVS6GISU\nV802BEnQh1q7Wu85HLFyoY8HCojyPMjNUxzlwEHxhk0kyOlwhlz6AkzX5Mug\nXDAfUbNY2w5kuSlmQCnGlRn0HVAd85ZvZHe4ZwuNlJeiU2v64LAZuJoHZ+gi\npUccSA7MU+bPaS/O9KK2am10ev+zblAAfe/iByjs43G29tXmdXdN9miMJxLD\ntHIryBXHoW7xWyRki6wwfvBaeRuIsxcoyohFahf16+ZhWy2hip9wdhFtBFt0\n3Kregh7pwrAVgjoHY52n319S35vCwTIoEyVCzmNZqTAH3FYQlhYyoigdEcK6\nlX99ALSe2vCK842K+xEsM/AvqshKYH07Jbq4yAJf8eIvBhgWdyQmc0qNQ8rw\nl61PkDtRoZEelA3DarzRGYWscFlKMgU0dM8OBV/7GpTJOJSbp9VGAzyy40OZ\nwICz\r\n=TAJj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"71f2edc95d0c022097b7a4dac61564fc94a42209","scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/three-combo-controls":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.4.8","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_4.0.4_1551560866722_0.14191186912790688","host":"s3://npm-registry-packages"}},"4.1.0":{"name":"@cognite/3d-viewer","version":"4.1.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@4.1.0","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"d343b48481ff867aabeca0d9b707aa1e4addeb76","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-4.1.0.tgz","fileCount":6,"integrity":"sha512-UaziEDXi2U3JBbDQxBvk8LfrMxHvHlbM9A0jurJ3RI4CjtzvOCiF56JB1Z2qQdLOohOrXIOx4klJwYm88DHb5g==","signatures":[{"sig":"MEUCIQCKHGuPf6w30YolJRJTmhCIjfoY8/7uDKa8h3wY95OxxQIgQLiwOKpZ37WuHdM54+WL1PaDyjNSjxYjR/Wj8tRh5H0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1200961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgO6DCRA9TVsSAnZWagAACW0QAJTB/f9IEI0IoVZoFGm4\ncOEUyf7V6sErlM1q6jG9kAJtse6tQrGfjYLnOBnG0TzOA3FcbYCltd4yoxJT\nHQ9APGoH6KjQyCt8iNbm++bv4C90yoIcEkFzSn1s28cZ0Vd1c670c8TbFKAx\nvrGWbSSXC7espN1OvYc7ar8JldWlowjO+O5LEGGE7DbcuKuXShhdU2jFmNqu\nLN+i7t1TBpwXaPKCw0sxpugFBiqv+4GJTZkyuccrmBCr1oYYGnwFRI39+uvH\n2mCoGZmRncGgWsGJ0Am446Pcf7aiJiTTH3x1FiPXE6VGfaz6WO+LxcInlxIg\nA1yOiDcdN3V9WQfqhplv1sRl2HxBKtYnb7RPac2ZOE5D79zqacDR2oK5jKzB\np8mg6IwfBccXa0oTYSHhi9hrWxgIpwL6hUG3cWaOBP1i97GEX3FOI+vqJYkH\nSlkt8SQEf9JrCT5cfkknwGEHsQAnmGoirqsOkQplP+uD6WMIjc3jSIjQo+Y7\nQvHOzz6LYyIA4SOVrGni3wh7pei0tuSQrSe2Mega3C2LdlhMIKsKZ/w0YGDE\nzhnZJ6p0mayN1EEVjKS4nrBpq5H8fE+D+tlOEFYGg+ukRFaCNpNuHU0zeR7m\n/1Oex9MWRowAefwTr2nA6+lQCZf4/H5ARIAnio738RYkWNGQRM1fbzaofSbl\nHmW7\r\n=Hnl7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"af3eda9401bb3df93bc3d8905cc135d75aa5483b","scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/three-combo-controls":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.5.3","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_4.1.0_1551953538549_0.8696912796467602","host":"s3://npm-registry-packages"}},"4.1.1":{"name":"@cognite/3d-viewer","version":"4.1.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@4.1.1","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"0442ca62f6089c3e62306835d3e688473a6fbb8e","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-4.1.1.tgz","fileCount":6,"integrity":"sha512-Boyd19dAA8Yawutrkl4QLFn00PSQqwKvveA8vIQOo4EpPaQ3kYaZMO/80JmBnQfMSTNHyHwAVuYZl2chift6cg==","signatures":[{"sig":"MEQCIH4d4kKp0lHugDjMMWH0JiW1lxChZBY/zG58o6lBewgeAiAZfL5Yxqs2k438jazdmV4J0OwF9B/AMFaDbZFfivbF/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1201317,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgQurCRA9TVsSAnZWagAAhpgP/1gaYAjXkxsRP4eUl/Pp\nlYmEbz6ftDEj2cqp6sXaebrwOqcW7GuGycvsEGzzmFwLY0qaed4ogVfQt1xN\n98agn9PQmbIghNYxzhDz+q+ARmYLO4vkzKJyMIfw3qMJcKX64nrjK7IJGGnY\nkI6lnndvSJJqr+kP5xP/oumdR0+sm+MKUT7GFBtsE+bocg/l+GYdG1/+Qai5\ngkuofUUksrRwc7hHaBiYf/iopyxxEbMY3WdWEoeDGynpp18Mq56/PwJqnMIN\nRipLIwVbzZYTmH3bwHXo/Z7I4QVapUAEghhiYQqfyB8dMNCd3mVOejZ4pB5K\no4SquRHy5Pj9DQB8HFVZMDikBK924345fK8s4R+4rYBrbkK0JI8oijLpFaUM\nqrX5UXmQ7e3/94yqk3GLv5KeoVUL0LDvrpbLEjW8FhlSrM1HbyO4QGrgrOWP\nLEr04AWgwY1e5vgO+uvZ4CjUNgfA2QLbQl9/DqPTsLMfNeK1sH4jt37vrwi8\nrhrFk2czo8gb9isWlK+t5chN4OBQIgGVz9/03sjIWXYvRc5dMAJyiEjHUOaD\nZIMcX1xe7XeELeRHyBpULREHxkRiTqx+zJ7j2ErK9bT3QSDHa6Xmp6DyUB2z\nLPLjKf0PaGVaW6FzoxlNejp06wxNGsvr9OYBdtxg89pXSa9u0r1jKay1IGPg\nEL92\r\n=IUWf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"0dc2be10f31d3aca7799468ce6a9da1606eceff1","scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.5.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/three-combo-controls":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.5.3","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_4.1.1_1551961002774_0.49683962335390386","host":"s3://npm-registry-packages"}},"5.0.0-beta.0":{"name":"@cognite/3d-viewer","version":"5.0.0-beta.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.0-beta.0","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"kamillowl","email":"kamillasvendsen@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"b8483989cbf8f6c0de6ab91eb7f4ee0785999594","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.0-beta.0.tgz","fileCount":5,"integrity":"sha512-lEuKYi/ndeDbqgl/KtKdw74oPtl2aKh2DskeyfSBf2FUt5plR7zw7rdFIPZf6KiDw1lpSbKtra1bY6ZHIW1v9g==","signatures":[{"sig":"MEUCIC5QWfjBA2lyJnIZ3gLZodb5vQRx8y5uLgHpORXWdawgAiEAqCBelgBol2EIE1YLqzJ7G4hA5F4qtqFBbolSC+xX2tc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcxZ6lCRA9TVsSAnZWagAATn8P/jHM3MTAJInYvhjdKNz6\n7HCYY3nBHyFoL7YSnoOrSNrsPQ8j4wxd8wsDKXqoaulAWGMnQ7/Wyj63SeA/\n1raoEZ3DLgUuVSL6b9YaUgCRS/Egx+rzezqdqDCMuwA0mlpaYv44pv+7/mUV\nbUhYIPdBrPQzUxvCdMJK5y8QqACnzWfgjuGswWsGezSMWqZPX4PIZUqbnihF\nFIO7IiXGFDEAGsF/d8DcHLwesmrU1xrHXYR8CeYuXlKQNisNInU1YplDdDQf\naNfrgoKp45UKW8oKGz26eQFpb50Az7V9sURvNoHncARhd6mCQjyyviW/3+FU\nD6+DWq9bMBDClHVGKGPdCpUxvpie2/KfHBH1Q1ezThPT7NeMLLXxRPxfKNRD\n0XWtyXsMd0/UxgdHkRIx0EQC6t2lRXUnbZRUjh7LopbXaTR7pjJuQQ9k1Qp5\naBEMxdF7f/BAYHSTDmMWHtk0Sf4r8onLyhNcvlhShdYy6gCJdq042MqJfzbW\n2o6Wdk/ljw4LN5fVnm4kY6idyQouGySuZjOXr6ASbtG5FEOH7BcyVvw77wga\n2/+xm3he8+y5ljWNFjP8LKDJrC1rxKf/VZ9g/jeU2r6zhguQxJ6ZecFDb05I\nhP/BLPz5w8V484+gtbmFem+K7djTgwgubxMWVkq3A1KFBYZAWvBU6au2tOM5\nnENV\r\n=qdkC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"9fee1908327df80d9d0af482b96d6e51effaddbc","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@cognite/metrics":"^0.0.16","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.7","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.0-beta.0_1556455076945_0.9446198065676554","host":"s3://npm-registry-packages"}},"5.0.0-beta.1":{"name":"@cognite/3d-viewer","version":"5.0.0-beta.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.0-beta.1","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"kamillowl","email":"kamillasvendsen@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"01f546b42e66c56dc419729323b27280e4b3acd3","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.0-beta.1.tgz","fileCount":5,"integrity":"sha512-5JX2ELGejDnxfxaamxVNLCiZJ6Z8F7sUn6UM7m1nff60I8135oU/Ak8G1iaAiejMrwqttCcVLO3a2bZ2ArDlNg==","signatures":[{"sig":"MEMCIDdW49KGdKL4v/u+ohlG4c62UvZ1C6wqs+AVk28c4kaLAh9GooJLSe0sPdX9S+5anqpHxT/A8sFalE5sjdiKO300","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215619,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcxhRYCRA9TVsSAnZWagAA4pkQAIiv68N93HWqmOhEF2Qt\nY4VeK5zZU3iplUWdMGDzm9jJ2fUdGCOmqSKIz1+XygjagXUaAmZLt0B4okJk\n1F1OZhIlpFScpw20C7cPbQW9kLLNt0xsnLlhfqv6OhDzjiJFBC/9o+c+0T2w\nMR6+zgzZMZsa+ltVj8crWO7CwiC5jwgkokWtOG1Cad3m0eVPAiV8diY0AYZa\nOBs9mcpZ8IDPaL6IvSuoDOIQIMTLBIEnu9VNZ0uyjkmuw1TTlg5BsHZCZ7Ml\nXcjh2wvttoDzAGfTGIJJbLu3LcgvoqTpihmjo9tj0haBCgUawsEFg6NKfFvY\ni+SrhqrcfDY0MfO7Lo1Vmyjj5SIFFdoif43+O7wzAUBZX05pXnRar8J2mqGR\nE/FwqrIuJH9kl4xdWF1rL4+jNeHMyzzxe4iiGb0RuaQMmojQcR2M/0o0LyPx\nmCOnSklqWp+dcetN9I0AA1bd12WC5cpfbd7t+ctMWyvIdS+RULRrABxs4uqH\nd4TMnqazLfMGAW79rPOxNVlXQQUe9uiriKelxQNJqDBvA3ww5OetesP5LCBY\n01ZCIpS4pvHxklgbTRvgyd/d7FhTJZItTl762xh+lcfs37m03gnKcCwHI8Dv\nXI3dzMcZK490eKsXqmG3WimiodMmv2p5SI/+dLAGKkvVwO1Ih5T5aENqCoiB\nVnSW\r\n=J7i/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"86b88174d6019251f38224209005a3547e0a7c89","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@cognite/metrics":"^0.0.16","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.7","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.0-beta.1_1556485207660_0.3866440539619571","host":"s3://npm-registry-packages"}},"5.0.0-beta.2":{"name":"@cognite/3d-viewer","version":"5.0.0-beta.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.0-beta.2","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"kamillowl","email":"kamillasvendsen@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"5d66f344a5b2fb628e62ae339b3cb917bd0b64e5","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.0-beta.2.tgz","fileCount":5,"integrity":"sha512-MFlXicTgo18aYGeZLbGq4QxLtx9Ke+cceTt2Z12evpPOhUNYWU99fY3VMlP6C1W+CnKSWxB4h6RFOAstPEYYNg==","signatures":[{"sig":"MEYCIQCe7BUj5yo3Oq6FD/3juTVhBgkzX5dPR9vVqo4NYJIfvQIhAKvswSxM6aNbEqFvWC9EKZNL2kFQ63mY7UQBov8cJkib","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcxtq2CRA9TVsSAnZWagAAaYcQAIzF4tBNhUB3/hIE8z2x\n/Evt4r4smKw4uFIBv4Nj2aI/uyphRwOmtWbe0z3rj3bCOZt9OtbiK78bJZF/\nE2qVwdjuahZP2cVA3lXNEgVnFSz1vVtRvF3TMhRwZLIMeIAmoMcvR8V/Wl3D\nBRywztxOJsO08LOnEJpqiHfkyh9yHDD1GR0zsL3BlEIu9gwoEFT7TuoXb21D\ne/pjR9TOYhYLFxHn/3aSJOR3sKk1+O5x0y9++EctsC307kCyvniRPGkg8BUb\n4urllkPArD3lqGsnKH+65PyZzkeXPolpsv19d32uhHIUxIQsEUB/2gcLO20/\n+prtHPKrezkgPzQ8vqInZH5Jkpb3r2oKt1R7fcS3QhZ9WociqPP2nA64ee77\n8lgL5muRqb94lfpkGD8w/+I0QwZW7WjemseBd4Nzv6BZX8RFl+NOEnmSiJ8O\nH9V65AGmv4spfCGmbzrZ9Sa74MFGcIsb+aT8hcwky8DcYhNd1DTTDU8MmcPY\naHSjztilY7KNxvpE3lxaEu5q2oydKIk2u9BoJIV3F2HhR4hXd6yF+nllxJAf\nq0Tga4ISV+oOuOSN+5L2FqjPRD9do5CbgX/KRrC1R77BTP+vQSmG09uxiTLz\n6OvwuX76Y14j2t5SxyT1To9Jtb1lfndKsIpQ6iOrwFLrIzcVfu8c5nPn9Vz9\nXOM7\r\n=IdKL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.16.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@cognite/metrics":"^0.0.16","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.7","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.0-beta.2_1556535990063_0.9640784572533969","host":"s3://npm-registry-packages"}},"5.0.0-beta.3":{"name":"@cognite/3d-viewer","version":"5.0.0-beta.3","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.0-beta.3","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"51e15e5c4705f0d69a893ade682a844e7931eb76","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.0-beta.3.tgz","fileCount":5,"integrity":"sha512-vB8uxlBUAiylO1LKCjOy9qtJOEt3cJ7etUmZ1ovfMhpn9ZIRmKrMsgfj6JnJC7ohGsh5FOyEzF5xv5YyTL23Sw==","signatures":[{"sig":"MEYCIQCXhzzHizY44ssfdgrpjf2K2SB3w3igKqjd+wbWxHqTPwIhANkKfkR4IFVNSBCwnMybDHGALvd6L4hUnp85E1oLPwuR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcytBRCRA9TVsSAnZWagAAfDsP/1gFf52yTF4uEDTY+94m\nfcIBwS6aOCnTFOMMa1QuoxC+SmaGwzJToIKK3fby3u2hVylfD0bj4LEHNkSC\nownYVVkX30kEaXMzbCJCjSlAGnVcOnkMfooyX1yGha3aUZN3pV179DMzuQ51\ncOUP2HyLNkeooH1v0AVf6htMBEv50TDVRMMFT11aVI1uYsRBWQSaVpcY4LgH\nKJLKEPcPSuzYzO+oM5lIVMm1bVXGi+T8shjsrTrq+wUAutlBZ51gDL3PwjDK\n10/tl88kxnx4Vc+FJpuXcGD2opZ1ErRfljBzn3gYJJ9ETYEc7WbW+QXmdEb1\neiB7/MWbizWHXDCSO1xluONxYlT89ZNu/XIrcEbo96xw/j3a7IAQhx3VCU5l\nLyL7iU/bTne58oBzLXJvL5fcrhFzAsILdII+IHEnUvp/YbOVZCl58gagIY+y\nkydcA43C8w55QhhUfYxoAllsAn06DGoJ73ybiooqi5B+7CWCYvyGM2IThLSD\nJ4UYDZZ8vu7JlqpuBMIFMuL7IIC4VsvTLGDsIcy19mSioLWTjAL58mU3Me7j\nvsHzBLsJ9zouiIvIEFyrEcTZS1Zfb8/ohVj/PrHKgFcYtMdfOrju67g0z20P\n5Sx8F9rIdqrXXy+HUH5urvD1GYMM2Ee0cvIOswNAUW4OdG2TZrsXHOGQoykV\nsXiZ\r\n=jFaL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"6e15a46f1c2e01ba4a8137f4ded4a6df2d69d0ea","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@cognite/metrics":"^0.0.16","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.8","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.0-beta.3_1556795472600_0.9437386515063473","host":"s3://npm-registry-packages"}},"5.0.0-beta.4":{"name":"@cognite/3d-viewer","version":"5.0.0-beta.4","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.0-beta.4","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"df6ebb5190025bbdea46619b392e0aeee71020ca","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.0-beta.4.tgz","fileCount":5,"integrity":"sha512-46vdA+1hzO5Qcy/nSUpRFwi31OkHvbKB8YI8o0olK9hFhc2ivEAeUC5/FsU2g663R2fov80Ikv4oH9sEyQuSpg==","signatures":[{"sig":"MEYCIQCeFAr3ODaqTMf29mmYREqugymbdQHl/lW5Pc/nma6D5gIhAJLJiaccrq2m4VX8mjEWmlJVtlIW/rpK9Tug5Hbih9Qm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcy86gCRA9TVsSAnZWagAAMKsP/3XUs5jabTBRdaEZB5Kj\n2VJez6PzkDCq4QQ6jIAmfvynjeWjZUL/wQYtgAUQ31EtdHRW3dTKZEv8rHGO\nOI3lOICH5zdIRhqyvshQAvsyKv9QqNoSKc/oEnmG4QcfI7ah6ZCreQ3OBq5B\nLpMBb3GL7wqWcBoCAe1vx3mZTHCEi03yfAztvanVT4gIdTRkedhnoDS2VhKE\npvX4JbsK7wvgiyhouQhQt3Jj20m389kTsf/NL8i8n9uLNIin8PMgUrGmUAFv\nVwP/tJgTmpmQwY1dxQdqJmyhbUOoEPSixq4O+CXpqZHiZK3Bt6WSIqlwcd5i\nyQ4L2z6+3+kJF/U3dW6bFlQA6i9Vx5EWMi15QQCdgwds16i13SevrLpfKriW\n9pq9HXp/APpaRXvsf+Q2ApXIRWJ1ALpEIVSaoVvoCNK9E5BjW1+RvrhzqBb0\nLe5taW62JfWuPXRLo+vQbRbq5fz/ht7MiFBuALonNaxmB7nUMq2qixg49+FF\n7G7BJMAfl9sYWFclcYyQEdkiC27En7UehI9XMWMgQmG5W/4gwM+CvO4GkaTy\nfCDKy+qslgjQExF2uvIPNSRaU1/x6y1cKU0lyRUK3ushYqiqUjSYU0qjbnyf\ncXVUFzfLwvSeAbGz4WbaX/tCzEAu4A9/F9yMa79iC+z/oWbYRwSmE/nl19pE\n4BNy\r\n=Ex/O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"7b63e3df3db184a9b6adc0bd0feac2094c8a84fb","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@cognite/metrics":"^0.0.16","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.8","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.0-beta.4_1556860575682_0.4083973090944788","host":"s3://npm-registry-packages"}},"5.0.0-beta.5":{"name":"@cognite/3d-viewer","version":"5.0.0-beta.5","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.0-beta.5","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"6250d6d1dd65c481dcc5490e7205c68ea92a731c","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.0-beta.5.tgz","fileCount":5,"integrity":"sha512-76Ny/Dl0XHmKg76Gch+TwmTliwnMxv+Q2gHYwIDkVDYdGeyIZ8hg2mfi+KuQ8ycdWBKNiVK7PQIwWcKzPyKdfA==","signatures":[{"sig":"MEUCIQDxLwyLaThD3Vm38m3LbNu/h8/7mrLO7OWlI8Fsbvqe/wIgCeiEktVeoes1i1+/44WYY977utFu5C5zi8scaJpIL70=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcy9fyCRA9TVsSAnZWagAAKWwP/RLlW2BdcMDHrDt1YAXE\nDf+H6dAKDrdGbMkrQJsqeXhn9oOO4Q1KcHyWZYCWL52FOZq32m62Q9qy81Uk\nLensGzqSWCrLYXyFY+4hYNXfD18kIiwLwmRRb6YeftWzWXqyJeEvhidKM+LW\nu7yu8EcKzYHcZARid6er2fTQZcnk+R8kv99yAt6IB6kc6n4bBLBtNVqhQBtS\n72531GKBDhFLidQDqhzz2dpOwJaiPChi79GpxgyncoHDhQ7NZl53lHncnAw6\nVk3t7PSU34qKyurOqIx16f9x+0F+6XYjm2qYP6asIV8C0n7RilrjxK0h5Zp9\nCuXamoYsF50CGNVmt9HoR8tTsod6V7FrXLUMDh1+WkBiVoFb5jjAf7GJCrpT\ntwZgSLfGz2aWH4AOLyVditpkR80aqamKqo06e/2fvTwZPRiUN7KurrVmrdZY\nGYb1F/mSR/Ixg3mdpN6M7wrAXODP8+Dsz9JSnR4g+4r24uMeBAEZbtnwYfus\nx7fjRHhxazcDRjVNX8JHOAl5f+0efBCkgN3UpjHW8o+anU1OOdHyfLYMm2Lf\n5L2O9OGTXZHCUlVJFPhUdWWn0y4yYXKPWA7uJh/7ISe0ij8/8Rq2Kzo8TbL0\n0H4ZNH4fmIssf4aBwPZSNLJ/AStg2BpLS7i+FmymiG6RZMiL3AlvjlToQdFe\nAabf\r\n=IUru\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"118201984721e8c182b0581f349deb306ba02714","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@cognite/metrics":"^0.0.16","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.8","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.0-beta.5_1556862961641_0.518776978852775","host":"s3://npm-registry-packages"}},"5.0.0-beta.6":{"name":"@cognite/3d-viewer","version":"5.0.0-beta.6","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.0-beta.6","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"a019dae4ad239c0f9214b611c488821c5d8afa28","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.0-beta.6.tgz","fileCount":5,"integrity":"sha512-WQydGLwA9NUJQMQHdobFEin25chQJUVQtJIUjXMknhBfLT+XsaH6a4a4/8KKPx27vC8VW4vYrXxSEJ5gMlQ+HA==","signatures":[{"sig":"MEUCIQCTOVvB1zb8XAU15lCnLoCPtnzEls9omleFcEEH7ZCD6QIgMt6EJU/s+qqoeKS37RjFGonE+1qPAj/vTIRPTxWe64c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcy/33CRA9TVsSAnZWagAAIiQP/A47TZJcpKpqP/jO1D8x\n+XNTr0fIU0a0scQjtrCsDjHUp6/HTiaDLiqaxa5h0+8niTI49Wz0L117K7je\nNB2nKrHEeZh+Am6EhDRitSHFmQrERr4J8i6D4gpzwBmYTVhDNieAFf+jY4z0\noYCkFzjDJhBlrxtnBqZCug1F7jjsi2wlzrfVBYJQwQ5Znd6MxxsPL4JCoHhg\nmvLULwwbxgfQQ0yMaQnpsZDRM1ORXFAB9gnsahYypKwAEa6IoDF3SfnTse7y\nl0hy9/AJ4ggI0hDT76n2aI3GSy0V1DJBDey/sP0Lodqk5y+lHkrc/EHAFtjm\nDmrSZG0gQmnbBV39+H2Kxo9VgnzxcNg2NgUh0aUCJW6rRRBVwO9d1qUZ/J6x\n5tDdjZWPivg6RXSAbtmr/03xAtepX5vO84oO26A7oJZi2TS+l6HIM7wFQPP9\n+HgQYWw5MDMLZ3Zn/OZmqul73fBT7igMIRejPQG2WEa++2V38v2e72qjYWNF\nDcvGZxo3hi6XCwNOwogcvrPJk1sTL/luEIBqO71wp13RWHyXpDw+sKTT7k8a\nhf4WflpoAhAqxrWKI39S4/p+Wo6nfZraWfnfpgmNm4E+FahVwY/CQIYxqNzS\nYtO5aQpLkY1SHE1xoVBvGBw9m6kpYWyDNVQd2m1gae4x39yDFEcTmnT4c401\nqCgT\r\n=Psdw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"ff65c788bb402a451eef461cd97cab886286e37c","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.8","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.0-beta.6_1556872695147_0.9199878177451315","host":"s3://npm-registry-packages"}},"5.0.0-beta.7":{"name":"@cognite/3d-viewer","version":"5.0.0-beta.7","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.0-beta.7","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"d4b2a358429f5977f52b5e7322b4ce2a3f3a7606","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.0-beta.7.tgz","fileCount":5,"integrity":"sha512-kuNS1NeE45U7SEna/zrRPtBPJd6fK9Yr/DCiYFJrZUjT4FUBIH8oeQjAeLZSMQmCmv5wXrw7I/U1Yhvsaxxd9Q==","signatures":[{"sig":"MEUCIQC/KbWucw/w2y/LwmMSGVda7M0odLuDGqWA7cKJu3bSRwIgcRoqaN6+fx51tEGnII8//STw2yUX04FmN8qg5lKfJso=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJczAUJCRA9TVsSAnZWagAAib0P+gLa9ExHBUz0hcg1dDHa\nvUEiurAzV9Nc21mgvGZ8v0ob88pFUA0DkcuJ4FPVmwqRXOua5PD2QSpDD8NH\nbMfGjkpFhQQAcpOOvbjh0MoTT8ghiO/3PYlvB2dF+mm71ZyxueHiP5NlZTg0\ngye0NfH/56UlDO7EwonVETG07F8j6+6GsXRat9LJcp34bgOpA+cefFL98ryF\nghdMBiBBxdoaDlbktWpPF8GuPVPVHAB2MO0ZKfYBLq7DL7ZrNP1MMll/mO8B\nblObvEC4eI92/P1lLIzSJviJpjkAWFqZ6E7nmdXMVaBhTVqj0x7Xfpk979OE\nkqiARo9qXJtTzlhFN1segZb30NBUemrM3abNWL2mbAVma7MfL/UtRUt7r2g7\ncoiaZYc6NklQX/t3E8Fgq7fEFRL2cx1rldnfk7J02yqCgPmdqY3DUjac0nd/\nQYfUYL4V0VtGEStqck9xfXPftJDNcRGU1VT/zsDJcmEAR86OX80g7ScpQOkh\nYXX1u0io6whQuS4nxvPngWxbvSwgw+hkog8EbYLRBo6vZChLGqvK0Ss0yGuP\nF99EoQWJV/gqKlfjNVkxDF1hj7p7QChn5hJEGAllIwN3Fo1zENphIheo88G0\nuIRi+Bu1tRQDg0slfP0iHzTDQRGicm8fcFHeKlAZmxq/QA6IrzX8l3AYD4z4\nVd4P\r\n=v/20\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"86680ef78a19a572915edf447e8b950aab04afef","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.8","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.0-beta.7_1556874504886_0.003370022104359327","host":"s3://npm-registry-packages"}},"5.0.0-beta.8":{"name":"@cognite/3d-viewer","version":"5.0.0-beta.8","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.0-beta.8","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"f85ed7f6bf7bbbf61085b4751d12a6bfa6746e9f","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.0-beta.8.tgz","fileCount":5,"integrity":"sha512-hdAednwaKbgyKRQhgHSzq75RbnvQzYwlUowTghQHeCZa8Pqv91ryn9cJecRH/lJEBw2+Ilqb+pPGQzpji4ywqg==","signatures":[{"sig":"MEYCIQCKiOFoo2rHj9E8APHcltr6aD0qZzssTU8GkTO9tNzqSAIhAN42cSvrI4z3HwQ0r4NMqEKn6b32eYYkulcCGpJi2y5Z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216187,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJczDjmCRA9TVsSAnZWagAAdT0P/jKxIPEJiJmIIcXn9Mot\nCd0QEjBVq6NlJBRlGZ2ZyFxcvwRVtoykKIMkGMMK8X7vvG22GxVjyenKZ0Gx\nAEB57jiEo0kkaUWpEjnf+3MZLKX5I9BC6b0Tqymf4QeCm1SeVTW6qaqnku2M\nlzDONWY4h0wWIU8c1DFut7wgij+MkAmLxgorH3c2Z6aqCosH1fyi3F1ZUhcR\nTu8as5N/Lfq5cCDVzdl9iMRv5dzHxc2ZS5IGWgswOn0Mnmk6fu/wkMF1wXV7\nEOLzn+jRTxa3DuOKJNNgGnah9ArmzkSolPAgxzmMKuas6Rcnluo9Wb3+q/n/\ncQviGKoAYKo3ShSLQJvQLwV5Jzu710dGEEanu3825iWn7IJp0xAvhPFEUtgo\n+OcWgojV6I+i9H6jTMafnOnRaZURCuvek3t3qKfaMY/8onzzGN3tD1pr7z9f\nWz7IicDg7ekoGK9b+nVZwWG6+OWeciaisThDu7bpfOCuWszFKbcf3+06xRJC\nb/264SyNSI5YWR8ssXjBlXN+h/XjfD1/bIiQY/OePdZfaBXck7H21YElK4hm\nbxLrMfITcU3Mua7KUSReroSC2qlLoMrGX83opbXZuiZ5DDfbW4kzYyWsZ8lC\n0o4F/ghD1QmBBr17ZS8nrWBroJ6Jm6hicxkG5wJAuvQRFXjbKuheOgOIlR3L\nCkvc\r\n=O0wl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"2123a55b15dcce7ded56dc503468ed14b3c20cc0","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.8","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.0-beta.8_1556887781503_0.9250072959660245","host":"s3://npm-registry-packages"}},"5.0.0-beta.9":{"name":"@cognite/3d-viewer","version":"5.0.0-beta.9","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.0-beta.9","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"9a66ea6b25d2cfaae4f70f03312f1e3d7abb65c0","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.0-beta.9.tgz","fileCount":5,"integrity":"sha512-5W+O7j9G57IxEt38wBeVB86ht9RbnupnoVfuGNB6OP50ujzxAiYVXleHZJ7SZmnhwX4v+FyDPqIuJ6c4Jct0Cg==","signatures":[{"sig":"MEQCIBIguUo5SQ3DmZKuTORDdt/wMO9t+jmDuu3L/bbjSZ5aAiAj89BxABmpLh2GUUfVNW3TXW+w+i10IETXKEum1vggMA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJczDxKCRA9TVsSAnZWagAA5oMQAKJ3EY4B5xMFLAADmwzO\nxT+ZOyYz4LUbs8swlF6hFkGNOqyRVVa82myKCQg9KtjUt/gVLJc10CKE99SM\nd626AsAYC2GFwbEMM4FwaJzoj5fOxO+LqUh3V+WN7/JdeYGwsc57374PD4qj\nPrACUAIjblM67VbLBsfvGEqQ3eLSqx5dXlsUstrGazHSG1YIkKQ9aT9HMxmn\n/2Wfc+U3KugUyuwnaIiEVzkfJ9uyZOBu8YCQYCEeJZ7yNqofdambomPIFf8w\ne0Fzxn4J3IG2pGStxfnpISWosSvJSEa+OmynLqzOJqlTgBT6yyDJgurDEeHc\nKoqI1jMvf9bVAT03GPBigVxYQp0sK4LWZr50D1JJtW5tHTWfze1UBVAEXNqV\nTky0LASxFZbICJ9O8/ypKuvX2GZtALneGOiUju1tzc0/eJcZGOrR3MMpmOPi\n+xL7Tf3MsC3MBA2UG0ZJnoQ+IkOgbanh7+ReV81jW42ID/rPQCznjRjFpOAD\nZcfkjTj9vGO8eGPknzzXbyWO41fFKgjCVxQW41AV7piwbjxEwzCci1CxR7IP\ncZdX2a52V6iIpUmxyotKh6BZRYBc8XmGd/yBffyDJjEzRug+m7ITFzWTJ7/q\nsegmbqFhbmtgbAOEdOMwqodVWuklIj7fmSpn+zw3fI4Yn0brzvwG2cy7W63l\nM0mE\r\n=h0VL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support-3d@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"116d56e829f040d25dea48f72293c78cdf8d1aee","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.8","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.0-beta.9_1556888649383_0.6573809416023066","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"@cognite/3d-viewer","version":"5.0.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.0","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"3c848a5ff6e1e7bb9b71566fae830be5588fe7c0","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.0.tgz","fileCount":5,"integrity":"sha512-TYGsvExKvYs7YFEc2DNP9HTgLhgyKBgM3dhLDydELu9qpznlAcmGc+9OTC50kIcnFW11DMlA3zZ45uur3b11qQ==","signatures":[{"sig":"MEUCIQC69jMGMf1Qs2VTb3dfxJIqr4oeapL23MYL0CM9sQw0zwIgEpwwYUWTbM8lO/UKEDgkSsM6smhgH0uXAnEzVH7HfgA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJczECTCRA9TVsSAnZWagAAJFEP/jZbgevYzjyqpzWXGzBF\necK/0xcpAW54DvhpQJnYWJqr7dooKn3QXDDskhFb0m2onMmDxx3e08V3JKyM\nRS5X7vUgaYDR2eNZKj2C82OpDyCBsN1nWRaG2QojaQnFSdOk/xw1ewOQn2wZ\n2yCqc/D3KyknQBvtE4nuUiYF59WhSLec8uPzlfxors5FEIseraDyH4M4aES8\nFer95bybhl7bwYk/5LVe2wCqhX89yDn97Ssfr2SqaKxzesCXOyrkVXNEOMdu\nRFXPQFhfVoJ5gyHfKJ4VC2L1YfJgPPX1KLUQyH2t4SM4W3oa80omIYcTdndr\n2o6d76j/2vilIj5lkiHsRMijOINAvOpPQiE+hw7bMRiJyRZrHLKHgOG5wgJg\n5dvNXivbOkZxOVJmrfg7r7zznIH4bn3UhsJj0k6Ksjnmivb7ggfEGLzpzdCu\n2O89vjWGYluBqNaFSU/TInhRFoz5U7eM++VfoQ5wcBsdzOZcTOZz5OoxGWic\nWWqyz1YDd3mY8KfXKYLRHaQndATs+E3USK6cV0s5n7i0If/8+coVVYE5wPtH\n/QgchYEAB12YYrRxvhT+cJ/8eHW0Z3xr7lI3VfyekzjEHU8qNKOoh7kUcNbI\nh6LHPO2tZfhGgHOi0bz4Zyv1KzC2UgyTY9/seKma46YQlcghUAQgoqEoLnpK\nuOKX\r\n=l41o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"a87d54e70484c9fc05df6585fba5eced8ef640f7","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.8","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.0_1556889746352_0.9562840518625657","host":"s3://npm-registry-packages"}},"5.0.1":{"name":"@cognite/3d-viewer","version":"5.0.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.1","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"e7ed1a4b5aa5e09dfdcc77e75c25706b4f46b7aa","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.1.tgz","fileCount":5,"integrity":"sha512-V9KxWnBCq64geglUEheHjj7JdIkAyi8/X8h+w8FYfWRGMRZFu9NzOex2B3uWrAF/k7dXno1WXDAlAVYGxH0pWw==","signatures":[{"sig":"MEQCIDBb+7KdBUtVWplLuzbB/Nd7G/8rYCg6ADmT/dYTryWvAiAykXGKKrILlMVwt951z+s/fwBD9QE0pkbD2eQwhENw5w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216268,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJczExKCRA9TVsSAnZWagAAtDUP/jU3/C76y4QLWp0kZLra\nTybN5REGtNDPFqH1nPH1Hfx2JndbSInmTVXWmyzyDKPgsYlBzTCrS14tN1po\nfrCmte81PcB+hBz8O77bN4wUcWwXtuRSIY6op02g9+StbagUx3qvWLHUeWSS\ny7esASha4UOnR40HAAilq2VlPhl+97K0bklC73c1OUwHPJSJtjuyXfMf5TSG\nBypYG0EV0xifDf6Ges7CO0rzSTvSe9w5XteroC0/1tKHTef8blyRevnIQIgT\ntPxRkwIY3wkVX4ZNTaG+OtMrLF2QSugmb3nXsdvGe6BDqerl84wqv0wx0X5y\nlSm71dWH8uPALMy5WsbfzN2Wl00HiKjFXpNlYLufTzjdl2T1mKc9rSbGjth2\n/jS9myuy9OqI7necJh8u2naAiFgtE0HQWaGOKhzJyQXOQ2xzRuyqyRBOP9oD\nl498lpvJ7WKp22Ciq+hMTS2L3hxidy7XMbvxzC1rA+Tk/OYs/Os8jDzlPQsI\nbLGDNTgqNacIhll0LOizrMi052yZF2atvnvJgfb/+bAEA+ahiFSfG7AumMIz\n52/J4sqM7p6FbnS0q83OnQ6JDO7DL1M378rM72+qLfTZKeZGDziC2rlDSDOd\nsxPtewHzHayNdHeW7dY4guXcFwvHHbD/oMtO43o5YpQOexFEgLAS1urBKmbn\nAYtf\r\n=3pa3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"890bf1eff89e5429335f406fcff84a390a808b43","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.8","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.1_1556892745505_0.9825859333178577","host":"s3://npm-registry-packages"}},"4.1.2":{"name":"@cognite/3d-viewer","version":"4.1.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@4.1.2","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"955b88e1b7469dfb9f5ebd980aaaa92f86686d88","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-4.1.2.tgz","fileCount":6,"integrity":"sha512-fEbR7GaV14+C9UA7LZRlRzt8l4g3DdSMzOKRMQkurQw+ZjqqQ+Qc+9if6tS5zeVQMp3OA6jWZSAKSfW3w0p/gw==","signatures":[{"sig":"MEYCIQDxRNlD+L6br+hlV8HYqzXiv+7IzwEGNaUz6rOkcMDYvQIhAPv4N0z/wMAf37caP+WGh2x2WwWrej7sf7ZqPAYI26Tt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1201521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJczba/CRA9TVsSAnZWagAA+LkP/1TIRZpiVkC5imHneNlF\n8c4Tb10rEfcBOaBZfUqFx0NOoOBf7q4efX7kxO+sARLa8/EpRrJVogI9KYjO\nTn1vwtHmJpgtJIpaEW0+jaqUSpsfo76UPfDJdjiqexmPmUi6S7A2gAjCWGD5\nV8kWKkBYQyGtaBvs2uqMInGMQt3YBRrq1OGfxZERYFtuNRRaJT3+6TOeLB8f\nruDq3ALeTBUcgNco1NaoMOz0Z6euHYXrz/2HwvCoDk7xm6UjAXFzwmNBRZWc\nHCBtZYb2sti79MptMy82bL3OcQEaCsyiRvA2HE2ls2WMtMmDl7vJ5Iuk/BYC\nEn+2/hhp3Ln/jVzOoPhlSo+vBTQ5eJuNtua4ZaZ+C9J50hvCMJHkPTFg4d81\ngnTlqRdznACZ2Q33Umqz4SSYmMAWndJRzTFU0OEEwwa8k10yHTHb3I2q8a9f\ndC6LVSxba+rIXPMev1mCEFInZ0/cJuPUl2b/LwqGLQnPN+Qlw21FznD5ouwC\nJZ99pvT+ipyFry+ic2UqI8+hPJIRzDz496JbOa6ZXjd+VTM8vRzwT92zUwx8\nSROzNBq0FPpfexcVmlCxicLoAAoo1+A59/uGMu2eOaPrRn8xZTBda/pklGWa\nru4aMjFdmcxeeUb7xUrHoXfO+wuvjrssrdcO/D9CG+wylq3BFgxEU3AVeNy2\nkD0U\r\n=j5dK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"cc62cf7d12482dd813fb81f7ef3ee066b6642b12","scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/three-combo-controls":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.5.3","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_4.1.2_1556985534165_0.9891458415456194","host":"s3://npm-registry-packages"}},"5.0.2":{"name":"@cognite/3d-viewer","version":"5.0.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.2","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"8a3e414c1827958bf9030ca1d825804cc023ec07","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.2.tgz","fileCount":5,"integrity":"sha512-Vx/U6rE1MKD1NvGxTI4l+wD2y8Q+AF4djwhwWjBxn3nVzwrCTk+dUkHp3Jg20lqI4/hsv+QhIxZEXrZxQ3ROnw==","signatures":[{"sig":"MEUCICi1W/Ztwt7HpRkcNX/n1PbJ1YusCZcvx6tQlQ6wx/obAiEAyD3GjFUCd3diy7xnaqL8w1sC0QMqP++8QZfPUsRj4P0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJczbbqCRA9TVsSAnZWagAAe+gP/3+3X3FGA+s+nJx4awur\n25Di3sL27PSeUKqzJcdW2LPpwFC2axFrojuXHfiZZoMtXZepLe9TI4S/K68+\n6HOxECrp7Ck4C0/RpfoItyfBbDmnyuimqmDlP74lpQA46y6UBv6AHVYDeYGy\nMeOQ9nj5/Igb6l7VzNwNxaFaZ+Ag0oFvmC4vMOUBe9d2pfSb1003ePqGKOwV\njbdnstGK4ZHhR9D7I5VClnmZTFVgBte2PjO4iwGP9ZD+v+BD6jCbzYnBiEFh\nAq4SwsPgJhXQkYkdnvqSxtzKfu90Keis3+zHtzcMtVBWYPkvX8Bmo2Pjohx2\nxgXi7tr5uipYky0DZlpmfzRJ1H04m4uyU/DTcE6ABsH340jFl651EsLKPMBy\neIwbI9cCs5HcqhgLV7EaM9i/qwmG1IaqtwULD2Jp56ryUmpjyPYpt58MiSDX\ny/xb1b9ZWQEGX6ccCI+8hYJnDo+ej921+ghOrb6tj9VYHyuAoNPeRT9wL3+3\nZf4pnPTLJtCKMmQDN5A1uc4+2K8JPad0MwMPcN1jU0P4dQwAx+s0mMdG9Lg/\nrRhLGIiCZBUET6dkbgKg/MwgeBTRAL3TK401/HMO103A0VbrVHKLAMPayB/z\nCFCs9u/9u3irWqjfqMMWHN4uBOGD06PKEg2pnG738pZ4V+n/wf6f7oBIhKDo\nG1am\r\n=tfT9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"c1d767037dbe48b57b5cd0092458fc118cebaea1","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.8","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.2.9"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.2_1556985578084_0.7319659033855399","host":"s3://npm-registry-packages"}},"5.0.3":{"name":"@cognite/3d-viewer","version":"5.0.3","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.3","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"6d2a9e5cc06c93aca95cb882e6ab95653f0ce89c","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.3.tgz","fileCount":5,"integrity":"sha512-6wzkjff4QfSbr39QjSE3pMs5nl3ZBp+qCdz9DOdAwOM03Q5nRwcog8plh+SIa3/wpRfVYiCln66J1T7f2GzZZA==","signatures":[{"sig":"MEQCIHrRYKIzn0Rbx1v83OjddEpqi21+Kr/br/sN9tbgZ5p+AiASO1SiEueqY3OU2FJ3SIZwA7qdb6Ma0Upcu8JacEjorQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0XtHCRA9TVsSAnZWagAAQjYQAIkTaorYhthXYRpwJOK5\nnyzv/xh2Fb0W5kdTq//R9abeR0re3aOyEk5u6zV8YZQRBBRVvnGJmBIH32dQ\nx9H/HY0+oWqGRhVsDijIZxyKj2o3YXrHDbbAMwxrvzUabgQjg3miMo2ip01a\n54z6CSLXeQDkA6jl6D7OtpIez33mfwDNGStwCcy1LsvwdJq4pkK6TnbwszOF\n+eZlNXERG0qUxJ3XF3gpAfiFfYnt+1pUBmM7YpyaQnaQHElEFTYaWyt0p/Zw\n0mzidx/lBYpW2xZ8TRUZba7wRnFYyvzmNP4dM/dRnZxzv8Wubz/MPGHuwwcT\nlveOBSWZ0Hybqg8EoSFNJZxSNV5LDzpSsHLSSB26PPPycoVAaHR4HH6UeGPB\n9YGhR7vc3opldpy3nHh5v/gz2j8fO0T2pbCt3zH6I2/jBZxGM8/GxSPIBf2q\nj5IbHYZLVY14e/aOHPNiKdjJ3dmttnVaTCN81cpZ28RoYlb0NwV7jHvUidq5\nk6yslgX93ZwATnX1E+f98l8ZcZjrHwuFz2lBrA8fNR6RwqozO6ojFEphZ0lq\nmmZQaoa2+Qh5BHj8mPjZU7KQ1Rg05/MXKKLMnAdl3tZB/m5PiH3DmuyyQKnb\nxD9+iY1JQSMXmYhaaq5O8e8pgAKc89LKWd3y3yDCefMc7q9Tv0bj/W+STDFN\nTeyB\r\n=Xwjt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"4b8cbefd697185c5926fd37f127ec01a4bd71061","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.7.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"11.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.9","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.3_1557232454417_0.1869692979789821","host":"s3://npm-registry-packages"}},"4.1.3":{"name":"@cognite/3d-viewer","version":"4.1.3","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@4.1.3","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"3cf478f1d8ae3941eafe533470a46b30e79b6c1a","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-4.1.3.tgz","fileCount":6,"integrity":"sha512-71ZilrhSxHc16hrh97ikAwzcR6oud63szNqO7vqMVJ/owfEGpbH4yC+jbLKVYM1kEko8xZuZ3wTsLRxwS5sQ7w==","signatures":[{"sig":"MEQCIA8uoWEWLsAcKPbN/D+NL50X/9AO3lizJtUi4NOwdRXcAiAvUDCfN+6Df7BgawQV56bMJY/5UlC+QKeBuW8j29hElA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1193447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0qm6CRA9TVsSAnZWagAAbKMP/jcov+HcTJ4D7w8tSPb7\nUrerGZe5XOocpzAWkA5jXaXuXGot4YZMKiNJ/KdOKceGjyUN0JyE+PXn/g4E\ngEeR91lP1+aABpDO/ZkS+2kMjbIXsS73fIe31WBUZPD26cjDdU/xWPZ9MCT3\nUeqgmjnOw+i5/Nn+yygJAcga9vEHwttMrNatEp1sOszGt2y5dGcO2ZRrcTZS\nbmYPv7oqgjaL2EXqTmTg7t07uPUo352dBavxdUNTn8pMuPYBhG3KsZ4l6RIp\ntuFlDVbHpdCTdiP4ngt8whzuCosrx1ts3mXdjlO/geP1CCd70uECg2gzTUg4\nNhkt/XXUKAIjbS59xGMpWPzzS84pG6rH6kA+cpqP0x2aK5+r/2qxNk77Whd5\nA4Chpq89GUqdzdpvSc8tKlJmXMV+8QC8B9yaptcWquS/P2AHEzyNQbGpaYVo\nU4niOIo4aoM6v+c9VGk8xJlvpB3WbVrH44QH90/yJ3WVSzqhwxXqOYy443/1\naR38lQid8mKyAxPuAPdWBvvUV5IpTBB07sg+Zpfb9zJJEfvRGuNYMSG+Hw6B\nXQKkU/qKsj5sdTxccD1HxTg7fB4Rfq2YktMx0sdn7cL0q1pcFO07IVrZV/5E\ncKKeiPDXSqJgSU3hjOi40bxixO0WPvtHjFnu0nYWtX+c155pdFNTvDjXRP7w\n5/W9\r\n=UCru\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"eslint src test","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite's Data Platform","directories":{},"_nodeVersion":"8.16.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"clamp":"^1.0.1","three":"0.96.0","defined":"^1.0.0","right-now":"^1.0.0","protobufjs":"^6.8.6","fast-filter":"^1.0.4","is-function":"^1.0.1","query-string":"5","sleep-promise":"^6.0.0","@tweenjs/tween.js":"^17.2.0","mouse-event-offset":"^3.0.2","@cognite/three-combo-controls":"^1.2.5"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.5.3","@types/three":"^0.93.5","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","tslint-eslint-rules":"^5.4.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.69","fork-ts-checker-webpack-plugin":"^0.5.0","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_4.1.3_1557309881049_0.3726784515182042","host":"s3://npm-registry-packages"}},"5.0.5":{"name":"@cognite/3d-viewer","version":"5.0.5","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.5","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"b66ef9d131637a0c63aa7b38bf9d81f9c8218ac7","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.5.tgz","fileCount":5,"integrity":"sha512-bMvc9tIuy9tmW0d6p8cImjXDhkTYRUmyyCB8Q0PCllptCkmjqYZAY7pK72cf+wgTmgv0rLN2NR2Gby4MIoqBWA==","signatures":[{"sig":"MEUCIQCW0ccV1UqrJqpkLHTzEbARBH6sNaGlOXJm8++cgK5qhgIgLhbV0MVkU1hx4YCIN0dyGQzFwKJkFJPAUqtObcHw4oQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0qpYCRA9TVsSAnZWagAAfwcP/jJhdqno7h7WXZ7kYseQ\naEUaJGBhqHe6vmwgvKzHVlmrV9rcnMtw/vRkVX52GRUQg26JgCQzkKxKBIBQ\nMwYV9BChUev7mRakxhuUX8w8/AYtZRV18icQlxiWM1xAGfH3l8ZRYSVnJAfQ\nP7h0XoD+KVGPV0Tn7M7qjIWECDye19OKrpAIQTcGRAhJ0mifSyOuIT90WrKc\n59JGTBUzPx+MuNBX/r2adw3aHyoNlugv92u7VzhU9aQYUWjS/UTpQMNU5My7\nMYgL0OxPkgrACQNwiud8Oo+CxnK8xaXLcdM0RjDtGmNrxTdRAgn3JCug85s+\nDzUGKZcJhC0NViZbnbTBaBJVsUjTHn2c0o+F1WY5o+CbLPiWVSDYm+KZMxLZ\npmXYuadpoVWfAVlxkQ7Hfjm9N4gZndsJlWmLet6eU+Fyn4AarMk6pQA7Tf8i\nTddzRVZxh9I+RUGUay2/XJ8xk2n6KFHrii9DCoabaFzxtY63SA+K6m9wPFKe\nmOuIH+QQlHMCnZde0Zt+c1qWU8NbbNzC3SsAQi8bsu9csomoN7SOu1wGGoxc\nhe72/4OtfIeb1ISNSHBsAQyIZS12oL+Ozdw48OTQAweYNcBDGUKzkqV3Jy6B\n+5NbYGv9SaYw79oFAz5uc9Nx6O8oIs598nr6bzCoUOuX2o6G+mubTgE3lO66\nqXJp\r\n=P2Nu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.16.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.9","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.5_1557310040047_0.42892621819439225","host":"s3://npm-registry-packages"}},"5.0.6":{"name":"@cognite/3d-viewer","version":"5.0.6","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.6","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"e54188de2b9a3e24e1b4dd35f04e7cc216d55794","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.6.tgz","fileCount":5,"integrity":"sha512-DjQYRUZ4mWIVJp4VGKAm16NMysgcRtOR+t3J1BdjLefJBPNdJQtPBl65FcHZGOWCDi61iU4QM5keT4qgBVgFCQ==","signatures":[{"sig":"MEUCIGuIWlQnXOPQq+uHyX3e5/kubSFBQMcCGQjEuj5iRODJAiEAv7SbPSrqwRdIvaPeFs8rKulOcWYqEvi0D5PT0v5C5cc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1ZX4CRA9TVsSAnZWagAASs0P/A0ZHC+McOisO/yC8exs\ndHD/qEiKOv0j7Avx2kG0IEmF1apfVh5/Rs3eqKmWMeeWl1NXxemRZr4/xibe\n9jC6KlJe/VD2CL/lUPfKFrKX+EoCK+vgPrWVEwiLBjx4Oln0ghbmvLa4/xAr\nbCbkU6d31+lrl4ZFNcUEJz74VE956O5Jlqz31Bewh8u8ioFBFHXwbzM6sicy\nSDuF5nhFLxAFrRVna+jvZdezBDrL8ywzr1wHsnN084CGs38n8j/EyalFIzyj\nIafPFM2cIfTuqmjQIBL0jnGJ+z0Fmm8ccTCWI/5MB78ZRyPdLGh2viaZ84BL\nLfhoVU3HXeo9ZXXeBsCbwXY3MTdp4FGX1T5UXx7bn+Eeq7ap6v9Z4z3Wj3zl\nuf9d0OpsNNgwlM2h6UO90T+t0lt2wiZZMk86DQ85L3AybuBZmEIeSUz9+u3R\nAbYLtB4qGe7zou7fc5rOAkqFrmrN5DcucJ86IlABrvgjPiOawkn0fO6dE6nq\nj0zN0FzlvDO4DTjaVZIbooqABMPm8U4UGABznjDnwFkU9kV51/1jTX1bIGDf\nG8ULYuooGC/ipFQFmWeGff0U0OJ0FAJOmuQb3wQIFgm9HdhsrV8fO+MhnFKS\nEMrdbgYWi9gsTzGeNUBAGOmVPuMYcLpv12+nz4+lXC1AHM2UwtJcdptw9bX8\nSLrU\r\n=typS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"1ea1a42341f0d499874de74c99813822424fcbd7","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"12.1.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.9","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.4.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.6_1557501431929_0.18115882788100945","host":"s3://npm-registry-packages"}},"5.0.7":{"name":"@cognite/3d-viewer","version":"5.0.7","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.7","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"c6c2b12dfdb8f52993abb3697e2f59ee45b8cd10","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.7.tgz","fileCount":5,"integrity":"sha512-3iLt9uIAgO0yrnfg1GAVA+I7dvy/ma73nUaCRHRq/afsbAeyF3UChkuTJLlZOj/VyPG7A3Ol6bZVBELwD39gvQ==","signatures":[{"sig":"MEUCIBtZqYWfOJnIGRvjixE4REy9c9cRDbttthMdlMLL3Ik9AiEA6Pvw3lj0OVDK/u0mWVpFH51HPSU46LBr2jMRBmrFH8M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2oJMCRA9TVsSAnZWagAA4LQQAIeS0li7mcsrMvfgdNuS\nX94oXNJqgwcOv7pNHkw9NWiJDRBjtfqB63ebSwF2RReznoB7hWm0Yu8kSKuZ\ncmizjTp3o8wDhRqbmBTTVc50kT84r83CZMZ40fIBRYZC4cbncbtRLteL4s34\nCt70JBULMLsu/TNAKc7HpTl3YDeV1LPkCCCxMnBmKLD7EH4vUvB0EG7JhNSj\n4zYiIWVcG/P+jrQW16E4gprc1Oo1W5C+bhSdNj5M32ZYfbsrWPwMu9wVeVn9\n0ZQSY8HWXslFXn4LHddEKQ/3wFtkkdBfz0Wm1akHgYIBBJZgOPbS4/T2boIg\nX6Jc1KfW9aCITDMKfR2m8L7D4f70VtamhDh/eNYLEwiUybSkBEGO4LwD3hxx\nwOKDMvhy1/nKj1KTgMn0Rbu+HIFN7AM9/uUq2InbTScMa38cVN3wf+J4IHxX\nvKSuSWw71A7DE3PWDQ9w7RT7iq4+ucRljdRycGoEI1SRWiX/PNdf865YDBRe\nEqSiIcT3zfJLGqhnJ6+ueBRmwSfjBut88nl+UCIu+sFq7zLv8YlkLnRjqjMs\njYsadOirgNZoOA9kz6X2Xq+M6PAGrp2G10oEUQ094YhZoTJLVST/AYKpU+6t\nWQjT1KbOxX//VTbPr/FpxtfdS5SJcUhUr+bTfrbJe0cKf+4q+ymzTe4TeoN5\nA2E2\r\n=/qth\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.16.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.9","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.4.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.7_1557824075742_0.364207511987779","host":"s3://npm-registry-packages"}},"5.0.8":{"name":"@cognite/3d-viewer","version":"5.0.8","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.0.8","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"90dd94d83ff4a62f79f26e0609c45ee0347c52c1","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.0.8.tgz","fileCount":5,"integrity":"sha512-d41B1szK+MCzoTNUzisxys0Fq2IYXZRuLbEXujNUTgjDI0+pODxT60AMffEZTnY+F+p9IMBbhNzf41oo/5pKbw==","signatures":[{"sig":"MEUCIH99wi8V5DMUWqg/9u/QJachk3yc5A5OZZIpkWaejyagAiEAyrE/qKbv1Ep81j7+pkA+QmhoqCnOiQ8jYdwGA3MkVYM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":211330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5Q2HCRA9TVsSAnZWagAA/mQP/i98CE77ape9fPQ+Cgob\njUDhy2/1X8oKyR1W1gZj6Wm6fJQMXge4o/IhHye+ABgRq4aKWnq/KgGkPn/b\ngzFy0l/93QOcgx2j6jY1RCyzSzWsZp5CvLxR6kHUMLz6E88pdo4g6lcKkt2n\nbYNW1xvWnPap32wUexkMJ70wvpoEDs+iNsAVpGFFE7B4cG1mwBQPcilWux+4\nhMnwCNbQaG6xjKuqU1X+EYTNDBeJ8CEEE4CoSDSAxq55zN6sb5jUWwr5W8YW\n6AreUqiBRggdY77BuK/vXjs/Wi3RodhPAm9FavIAZ0p/773HrBTNyg7aMn9/\nkwsdl+kOnz+eurQLjOS++Aj9wiiQ4b2hw1ZptofYuu/WlLOyubSCsrZPljL0\ndq4hhSGXwF2IfTIh1Q4nalw9VO5xIH7/xgHMxiz2Rno+CBwl2azMxk7V21Z/\neiQNTPjtva3aM2WqdB47zgst/olajOqra7Y5SJYTdiiGEMTyziBEROqK9GbH\nAEzZjvNkQDWoEu5Chl3zhqg1I13mO9OO05CGLYvVv6CH+Obv3YPabTUq/EY3\nyNi+POCdB4GNmni5Nn20y7ASk1QjxoxB9rjbuDiD5lt1BpPcbaC9Jz894RNM\nZGyqgvmW75vsRXfbcYBYNYl4eEmhdDao4Oo2u+cKESsfAPI9dDFeHEZB4nwY\n52MN\r\n=h1xF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"d72d2e02b0939ed2dc59853177d057cc2afb97d5","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.14.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.9.9","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","@cognite/three-combo-controls":"^1.4.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.0.8_1558515078340_0.8046249138224775","host":"s3://npm-registry-packages"}},"5.1.0":{"name":"@cognite/3d-viewer","version":"5.1.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.1.0","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"6978b3263b6063a7ba8cd19fe2d300f6322c5116","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.1.0.tgz","fileCount":5,"integrity":"sha512-3qfNhQ/QtPF6OX4WYXI3CzMGzrsEI0rBcS46A8AI1TLxxM0DxnQuGc2KjO0ZeX9bhlcF/jU7+b526ZHZwsmOJg==","signatures":[{"sig":"MEUCIQDyLkeOPwTdMR/kg0XGnTsCO0N7Z/juAE3RnB3wg8D5yAIgBBqd81ZbLD8ZtnJfhvlfe/mxq0KKMSBZedexzDwdPJU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":211549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc8Sd+CRA9TVsSAnZWagAA9D8P/RPWnJHKrpe56uShAViW\nOQY6nR3JQH2Nrla55FtNDQrgeu5zb7Ard6bKUT1sdgYeAWxwxtbq+6pxRN7s\nkR+LUVqMqfjJsLAcL6ohHicOm6RHQHUKXiEPkEQL/jLZ0qnf4kzWiA1B+K/p\nlsuf6K4mKEw+Qk1TeAspVFo18q2lsn5QZTd5rUZ2uHI5SNYihlQHV7/55Y0/\nBZKhJjku0rbHn6nNxvxtQ9K29lJibrwR0I4ET5zBgeOqKdwY5kTs98uXKAmF\n0Q1/NNaIVUiuVmffWcIWLDzVGkEkNzJyPpqCNWW+0d8ZE4k6Vv+dFQWzl9Fz\nYhuNJj++k8M7x6V7RKNCUXMa/mpf0QYXZaBClM9JGFCQfG6cfNoYOtBJX8Jv\nmU4BzhxDKUZebd42lNVHoLmvx8BzhzPrsYNAcrYBRPxsIJOiPQCF1doE/Zse\nJ/GAXYxIAwz35jVx7gVGeT7nQohCyE8PvplF7J7pJGQcbJrHwZVk342N2U6o\nfwFaR35xLIVvfl29b+opeYosVSUtXNeiRpZA+syd4opwWMuQaUtHmOPm0yjE\nyEQxfOmpYeTLGOO0yYQ33UUZyDpXS0cQGDXq8O0CniilEA2odMLNJ5qq0Ho/\ncyjWtxCsfAuB8A8nHC6gDybuK9d9oaL6kao3Ypw6aHPDbGHi7dK5RR3nkI6h\n2uQ8\r\n=Y5SR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"e26cefc23c676d1574ff16ad08444aa99b72088e","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"12.1.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.11.0","@cognite/three-combo-controls":"^1.4.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.1.0_1559308157893_0.5090709740569757","host":"s3://npm-registry-packages"}},"5.1.1":{"name":"@cognite/3d-viewer","version":"5.1.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.1.1","maintainers":[{"name":"alexcognpm","email":"alex.chan@cognite.com"},{"name":"alexistao","email":"alexis.tao@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"datakristy","email":"kristy.gao@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"graciexia8","email":"gracie.xia@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"magnusatcognite","email":"magnus.johnson@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nsunderland","email":"nicholas.sunderland@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"af7e5bf52c8148c8b683e04e36b29ef4b24b63c5","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.1.1.tgz","fileCount":5,"integrity":"sha512-AWBKdOVNuOTBGKENLD34/xEkRRKwRr6/BL9xVKQqwMPIpQXGszEymmYRHP+i/3P3TS/+497KAA+IByloEUt5EA==","signatures":[{"sig":"MEQCICDGAbqXfLwHdGlmyLXGuJUZIhXo6k6gbIxGWGLnMGDdAiArdG+ZbTWPxbFhb6eyPSPlep8F6wpDaukVHnID1g9NLg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":211549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc8Us2CRA9TVsSAnZWagAAAq8QAIE93KiinEdDSOwKJkUe\n1IU3GfUTc4RmwIY31DUKU2FPA0ZP8SeuvYKn6y55S1B47oNGOQysZF9z2Ppw\ncesGmk1AaBgmSSTB4mltxH7ZhDNZtL2HTqra/EdnAxxigFu/FTdD5UwzFxZD\nPZMogEXfAewgE4TqGFj5CTOdFsGuPfZ3398ghVoBozmQI9UKik0FeHU3Dt66\nOQZ6JFg7zyHd77BJQFZlSlXgMDhCWc/MC4zotpabkP7NniDKmLps9kOeUzsS\nnlwO/W73k/35vqWBGaYfIGqCUKWT8XByJ0OLU//lPak+bDdHbCZue9vzQFP5\nPyJ+AbIAqfkfOKcTrBJV3kINAxRCMnhH6piq578b2j0x+X4EKB2qNdxQnKSq\nGb4F5ci7N2gQl3BlKZdy4eU1OpgELaNVqccXtpdrg7pKsZBcOuqw1j4B0doL\nNKdmJPFL07qtfzxlbIjoBouSHNk3Kp+q1w38SGSv0zYTN+6IVr37oaSDgrtv\nJPKzSygXzn68g1BihXwDEUD6V/Z9XB3LsoKVi0d8iBAaKD3w2qlwYBEx6wFc\nCrquCDdpu0epU9/qSXqt1Iw06J5k2YZXhGlzQaGkwcnrPC7jOkXy3QMXdDu3\na6TP7x8AiYE7myib+90JqXuepP4WUmKt5ETPY/lz9mKJI2n9yf9nuBd2Y7Je\nRjmL\r\n=X+d/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"62e3cc82bd76cb34d3963c590605f939d9e7ba5d","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"12.1.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.11.1","@cognite/three-combo-controls":"^1.4.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.0","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.1.1_1559317301559_0.8711938225444524","host":"s3://npm-registry-packages"}},"5.1.2":{"name":"@cognite/3d-viewer","version":"5.1.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.1.2","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"cfb7dbae3daeb5986e18a813314773f80304b0db","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.1.2.tgz","fileCount":5,"integrity":"sha512-6RV1bcxYT3MR79RGZTJzEkWt2Jy6KgFjM8RNCDKD3aW4y40SdHNtpR5+E3LPy/HOaSjVVxG/apqcd0fRYxhkaw==","signatures":[{"sig":"MEUCICxSM/jbQogc050G4KTV/tE3c6hSkBpvrivEJS42soMdAiEA7CZkP4SR3HCQUcp6Js6QlJb+E5ZQBDLR0yg2OCt4N8M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":211720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc92d3CRA9TVsSAnZWagAA3B4P/R4dLSVsPZg6lD4AWyU5\nBkYbtqZuuS4aogqmcLasqv1HBgGpLwMppSp/3zBgpT8FhV4ejpdNtAB1kQv7\n/ESmWW2XaFKWwB9tyD8xn98FHIKp6mD/df0VnT4cLDxTt0pEatlzBrG5Aor1\nBsvP6mO73KTCTBC8IXq3hroBDdx6i/LER5qNLK4U7kTanU++EOQCgIzjtEzl\n+XK2JjFfdqp35DBzejyndL939K4ztGsIwUbP3g8bGcNPaGocfNMJLaxW5ZGt\n3Ycie3z58yrs97qKVZ8QLujwxfzrvuN87RdEsvOWJbHYxwyAt4/MljaHXzpx\nmQcHrmC3nyjfzJlwMIxqadctXFwk4utGkcEdySRq1vRC/peVUnz1/fMuse1b\niWFRZddHdjG7080LbKGS/8WgzBcwbo3Ax662RspdHQZqC2KSGC7xsKRQGICS\naDWjgrt5RDtDVGOITegZeZUMo+LvPKC0I/l4bdhiEqbbZbIgqzLkERAFTqPT\nBCvfQ5lAuXQONV/N7J9Yo3fDWaqYNAf0MRow6P2+Kk7OgIOsd+Tt1z2tjKRh\ntf10Ncb2tMxvDvthJXLJyExSBYQ9Y69NVDhfAt3vTp4BskPeJARtsEoEQZAz\na6LzsuuPcfvX1BKAWiFEGXDqpEgQXQNT4oJKAuuCgxkqrTD4Nl3friRvLnai\ngXsz\r\n=a7G2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"de2f4bd116d3bb9be4034531afea236356a8b259","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"12.3.1","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.11.1","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.6","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.1.2_1559717750939_0.28238313060731923","host":"s3://npm-registry-packages"}},"5.1.3":{"name":"@cognite/3d-viewer","version":"5.1.3","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.1.3","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annav8","email":"verkhovskaya.anna@gmail.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"follan","email":"torbjorn.follan@gmail.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"e893670064da24e82c10d74d80b8b81840f351f5","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.1.3.tgz","fileCount":5,"integrity":"sha512-bydZZO+L+6IywAcmfieeL57zR4aml2YM8tcc7RmRyS0NYhQqO1flXvQZV21J5FWPfoZutgq6d9V4s5FIKfFJgg==","signatures":[{"sig":"MEQCIGXlEYtjEd2keXRHMlQuv2h6saCqnJvThbMzq+UGpXcLAiBGfo8Pd5JzVeoqAVkTKWuAdGphqYBHx+7QGQGlpkckSg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":211720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc95YtCRA9TVsSAnZWagAA97IP/Ri14p2/5n9igc4z9M3j\nRsDL5+v6kJQuOT4JKLV8U3BLObQ0DUvv8D1krZuXaC6jhEKYS4CgYSwMYHg1\n1pgEwUOV3Q5TgVeY05SKlvLv7AHowqy8epNIyhiYYOWrqM609AMFRjhv1auF\nNt7sjxpUzgYJ6uBKyh3yoaw6S+FrLtL5sgu3Li0VrYPi3+Dno5YmRvqSxYi/\nZ4CBoWM9jEl3JqIv21OECIGFXt4TnjMXMlzx3vn0BIg9kO8cY60d65RlCKBx\nbGkzWNdmAYdKhKYap47kFa+Ntw0BrzAFHGLRXzn5Cy7a0c6yp19bj0qIoe/H\n14zHN82LwZqcdGjOcmEbvZCy20ZaQzH4rRvqzuAwMS33V/OGxvzfrvEASK5l\nJBNJt/iPyhn5DXtsGnfg5YlBJL8CVrQLzHv7jJFDBCEjHD5Sg00vw7ncoYTm\nSoTVvtiJEm4etIaB264ypygZmlAjGaT2cSWSVgXyXRKvNqlNucSPU/YPiAcT\nkmAcLxwzBTkpqimI+EoBRC+21JRbpnoUN/v+B3KVOOzdEwJoTgIyEBhkuXtH\nbgj2Yn1EirdpKHjxCakLuIGOvWgdumTbO8tDYroW1ez7skMYxwGcLVSWGEJL\ncE/W17EuE4TC7f3SrMrmwQ1QoSTWolFAhaTEFX3tDgz3UfFsLptBL14sxC+N\nBi2L\r\n=XP96\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"d12849952288bbf3682348a4064ed495514b16fa","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"12.3.1","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.11.2","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","ts-loader":"^5.3.0","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.6","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.1.3_1559729707809_0.9688423351242001","host":"s3://npm-registry-packages"}},"5.2.0-alpha":{"name":"@cognite/3d-viewer","version":"5.2.0-alpha","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.2.0-alpha","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"christoffer.lange","email":"christoffer.lange@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"ev1stensberg","email":"evenstensberg@gmail.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"karper","email":"trygve.karper@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vincent-cognite","email":"vincent.gay@cognite.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"a914dc67f232e8861e7d8c5a595a5c163ea23943","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.2.0-alpha.tgz","fileCount":5,"integrity":"sha512-cQN7LotA8R+xtgktX4m7L/87FtxEC4pfduijZKU1SEjx19eokgr5ULKasPx32ZRGd9MH3H8FaPcSHvTEyQHlTA==","signatures":[{"sig":"MEQCIFhbzybh8+z5iy2sSwTHLsLd5xr1os8kz5M/zQmlHIftAiAZzoiYhzAuPQpcfu9uUy8aSLHOWp5Me+T9yQVcVEcWpw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":211826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEvx4CRA9TVsSAnZWagAAbd4P/i86nXU7SwuOwT1/4DoE\nw25Fx9hwsGHFDxxgnfij2vXcxVn1XrhIlJOu2I/iV++QLQVxBLdOFtn7iCWe\nNoBwXQE+ob0Ej0qqn0CkfWoKE9f8g1I4RRZGJbvABtQmT+ZcgeKndYVwoOzj\nVQpdlqRxw3JC7aDdJX/cBZ1e7RoHtFmT0PSpO6g2HnAxHJhzegoLB4r+cLVp\nNO1QziAVXUYTCyz7REmjFK03XKYATP5kxu8EtxC1+xKA0Y49wK6r2YMtxeHs\nnsQNmynI9nXKqyFZH8Y2/1XvdwIHhFYmpXlYUxcI8sVeHgHdDuHaNlD0ytmZ\n4N8XvW8NMdI/G+BWfyrKU/PfGAVZZYHwZJDLF+KYbHvJyvO4oQN/Ma5uI7Ce\nIM8QVKOrPm/MqBTuxE5xK4qlKwF792naAugsqMTJFKXRMmSwpMQVtlwgtVxs\nTKEM7UdUccqToWkLZpK9+F5mw37pxmv5JDvivas+xq0jODCBNJwhraByc4Su\nzNrvwT3YW5zXXKOO97Rf3uCp8xSmhzgYpsfwr5rnxyNSTlgBGoVbivydLUTJ\nAu4hltGyoGtgahlh66tMDZPG4kjP2+A1Ho6yMPk8D9RIQahUgm8/+5jVpPw/\nG4ZhpzyX0hO4mQkJBoFtXss0r1tBEzJIvBqPf2Ukjfnj7aqQ2lFHCs4hGMA0\nFNa7\r\n=O1Lc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"fcb4d5b070f8f8a0ad3f47974a3447ccaf067385","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"anderscognite","email":"anders.hafreager@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"12.3.1","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.12.0","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.6","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.2.0-alpha_1561525368212_0.3380135360223635","host":"s3://npm-registry-packages"}},"5.2.0-beta.1":{"name":"@cognite/3d-viewer","version":"5.2.0-beta.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.2.0-beta.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"ev1stensberg","email":"evenstensberg@gmail.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"karper","email":"trygve.karper@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"838b31183e79335617e6ff56d9e2ee1416e9ee21","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.2.0-beta.1.tgz","fileCount":5,"integrity":"sha512-F2o1IHqQOPerMSxYSgNNDhaPQ0Wi9adL2xeWi0GYcnBieVjYYgO2st6Q8QO0P5hlPaH2uuawmcnk2zaJ7Z1LtQ==","signatures":[{"sig":"MEUCIFX76nNGguQzisnUw8QUQME5XQr4WVr9+uN0rGv0KokkAiEA4fI/2IBLGgiNZ2u7C7AdfJ+4NF+YLWsFnpl3N3lh3hk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNc6yCRA9TVsSAnZWagAAqyQP/jubOBnF7G76JxW95xgv\nBWPmVqzvTWTOHziEO+TVcbjLfkTb55MYtiKpHrkOdu/+Y/I0r5B59nzXx7EM\nvEBeK9QBxddYk7ge4EDCSNKbvo2f7VN3hEbI6bFdLWcCTr5X5S5NuRWdJrOQ\nLHrXKplozbFgJqAxwjwAwJfwRPJSsbB1ISR/9W4qt3sOnAuca7WDpdZA6b7I\nI9FJY2dC0ZHoaLyI8Wh28Zrkg8GoO7F9DGoKvknJBABmEubP7hXq6/XWR/9S\nKp5fyY6Cji/RgYCiK45bFg9mf2IAEW/NurV6CPVo0f3tJrRXRxT8cRuwR1/L\nAH6ybJYMGyhQRWHnEyM1HKPhRdSWhVRLX88bKCg0Z/mjHMqcbGNl8aHjyy7I\nJaoTRKht5FCof7Z+X/LmAkGD8N5G4iqI+j85BdENr/mNB7eehi2z56RAuH8M\nAQqRjcBR/dnowscFYepAVxJYWCZorthwrmTN0zL/qhfe3X4sMHMUrceIaYgs\nVBNPdlemp7kuaVfbMK489/uZt5rCRtI5gZJrK1rW1hZXNUOtJI9apdiecUmN\nVDfuTLKxPiVDR76DB+j0UHWwkiwUOMuQNjoBVDZIuqzuRiJh7TuY99zDJx6o\ncuXyH4FHJom3gOCckFVg30RrBxO5U9WMTbY+t63/vVggbMMrVaZWAVQefzJy\ntK5C\r\n=wKgB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n## Table of Contents\n\n-   [Install](#install)\n-   [Cognite Data Fusion](#cognite-data-fusion)\n-   [Usage](#usage)\n    -   [Sample code](#sample-code)\n        -   [Add progress listeners](#add-progress-listeners)\n        -   [Make the model clickable](#make-the-model-clickable)\n-   [API Reference](#api-reference)\n-   [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n-   [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument \n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId,     // 3D model id\n  revisionId,  // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n> {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n-   **See: [getBoundingBox](#getboundingbox)**\n-   **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n-   **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\n  const { target, position } = revision.camera;\n  if (Array.isArray(target) && Array.isArray(position)) {\n    // Create three.js objects\n    const positionVector = new THREE.Vector3(...position);\n    const targetVector = new THREE.Vector3(...target);\n    // Apply transformation matrix\n    positionVector.applyMatrix4(model.matrix);\n    targetVector.applyMatrix4(model.matrix);\n    // Set on viewer\n    viewer.setCameraPosition(positionVector);\n    viewer.setCameraTarget(targetVector);\n  } else {\n    viewer.fitCameraToModel(model, 0);\n  }\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n-   [Cognite3DViewer](#cognite3dviewer)\n    -   [Parameters](#parameters)\n    -   [Examples](#examples)\n    -   [dispose](#dispose)\n    -   [domElement](#domelement)\n    -   [isBrowserSupported](#isbrowsersupported)\n    -   [on](#on)\n    -   [off](#off)\n    -   [addModel](#addmodel)\n    -   [addObject3D](#addobject3d)\n    -   [removeObject3D](#removeobject3d)\n    -   [setSlicingPlanes](#setslicingplanes)\n    -   [getCameraPosition](#getcameraposition)\n    -   [getCameraTarget](#getcameratarget)\n    -   [setCameraPosition](#setcameraposition)\n    -   [setCameraTarget](#setcameratarget)\n    -   [fitCameraToBoundingBox](#fitcameratoboundingbox)\n    -   [disableKeyboardNavigation](#disablekeyboardnavigation)\n    -   [enableKeyboardNavigation](#enablekeyboardnavigation)\n    -   [fitCameraToModel](#fitcameratomodel)\n    -   [worldToScreen](#worldtoscreen)\n    -   [getIntersectionFromPixel](#getintersectionfrompixel)\n    -   [getScreenshot](#getscreenshot)\n-   [Intersection](#intersection)\n-   [Cognite3DModel](#cognite3dmodel)\n    -   [getSubtreeNodeIds](#getsubtreenodeids)\n    -   [getBoundingBox](#getboundingbox)\n    -   [getNodeColor](#getnodecolor)\n    -   [setNodeColor](#setnodecolor)\n    -   [resetNodeColor](#resetnodecolor)\n    -   [selectNode](#selectnode)\n    -   [deselectNode](#deselectnode)\n    -   [deselectAllNodes](#deselectallnodes)\n    -   [showNode](#shownode)\n    -   [showAllNodes](#showallnodes)\n    -   [hideAllNodes](#hideallnodes)\n    -   [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n    -   `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n    -   `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n    -   `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n    -   `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n-   **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n-   **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n-   **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n-   `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n-   `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**  (optional, default `{}`)\n    -   `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n    -   `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n    -   `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box. \n    -   `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n    -   `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId:     'COGNITE_3D_MODEL_ID',\n  revisionId:  'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox }\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>** \n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n-   `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(), new THREE.MeshBasicMaterial());\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n-   `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n-   `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n-   `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n-   **See: [getBoundingBox](#getboundingbox)**\nMove camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n-   `box` **THREE.Box3** \\-- The bounding box in world space\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n-   `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n-   **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n-   **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n-   `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n-   **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n-   `point` **THREE.Vector3** \\-- World space coordinate.\n-   `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n-   `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n-   `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n-   `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection) // it was a hit\n  console.log('You hit model ', intersection.model, ' at the node with id ', intersection.nodeId, ' at this exact point ', intersection.point);\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n-   `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n-   `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n-   `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n-   `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n-   `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3** \n\n#### getNodeColor\n\n-   **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n-   **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n-   `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n-   `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n-   **See: [deselectNode](#deselectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n-   **See: [selectNode](#selectnode)**\n-   **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n-   `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n-   `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.16.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"idb":"^4.0.3","three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.12.0","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.6","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.2.0-beta.1_1563807408666_0.8799695455936343","host":"s3://npm-registry-packages"}},"5.1.3-no-rings-or-cylinders":{"name":"@cognite/3d-viewer","version":"5.1.3-no-rings-or-cylinders","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@5.1.3-no-rings-or-cylinders","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"ev1stensberg","email":"evenstensberg@gmail.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"karper","email":"trygve.karper@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"b4efa20455b90585ea5e916904fb82e1f63a7efd","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-5.1.3-no-rings-or-cylinders.tgz","fileCount":5,"integrity":"sha512-AgakoAfZ8HKiW/g43COndzinQck47A7wv37HQKLDh7mONK46lIxdmBlshmiuzp4VMzcgd+1v9lCtas8A85weQA==","signatures":[{"sig":"MEUCIGKAh7md25+PbWNkc/D24Z6lkgFJovwoEq1U6pwxHwB3AiEAvFiwaTpNntuSThheqR0k2/TSQaFcMky060o3d1Du4s0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOvJ5CRA9TVsSAnZWagAAG4cP/iFtovXPxCEdXDXSlrw2\n1p1bxU+p12tWUNruduY1dYuTK3zlr7sPAwFy0PmZxITh5wfOnt1Snot6ygnQ\nSlv0EgCocYGxp9fZ05JsfUTdkw4+ClGoXMVKP0QMrL6LEUuEWJ/ZyRgbo611\njhr4FYkc7dFO0+97iIhnilebeiz1zHIoeo9tOB6xMm2We333mDkmvqORY0vi\n20nJ5OWJdmkJg+fgnqXwRKBSNvT2MvyfCM4SPw3DZBlr+5274VRsaQBZSw8u\ngskHT7G++0P4nTBn12wdOvcVvMsomNNKeU62bMRyqZMTazT1VWQEVlE9O/Jf\nZwjsLyuVWD18I6ZRw0btmtif8ubibgdPG0+ma4l0IWr/jy7WdN1VVWPuaXLI\ny/yr1AxR3VtD10Wp3b0zwwfg8od0PwWP9EfmTIr5IKXVGFD6TJJ/jU3BWyNa\nBHvWT1dF0Y8SqDmqIccENbQ+aJLZq6WZcYqHRK0XTbKNkc4SrLgsVhfZyHEX\nHSfGYOkIJDoIEVNH9jkCWiU1iPQWBZt8iAV8j1zZvds7YQtZvCIIBUlug+Cr\nh4CbJGI9/rWER6WnpuPCQKWfmYvej4nOw8M0EUNMVYZfdLQx4vm6vMXPgZvP\nkbY8baur/p90y14CVnu1JC/+4ws48UwMF2AntaSM4MKJwcXU82NDSgpGbN9D\nCUpU\r\n=7862\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n\n## Table of Contents\n\n- [Install](#install)\n- [Cognite Data Fusion](#cognite-data-fusion)\n- [Usage](#usage)\n  - [Sample code](#sample-code)\n    - [Add progress listeners](#add-progress-listeners)\n    - [Make the model clickable](#make-the-model-clickable)\n- [API Reference](#api-reference)\n- [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n// Remember to authenticate with the Cognite SDK.\nconst viewer = new Cognite3DViewer();\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n- [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\n```js\n// Remember to authenticate with the Cognite SDK.\n\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId, // 3D model id\n  revisionId, // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n>  {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n- **See: [getBoundingBox](#getboundingbox)**\n- **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n- **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\nconst { target, position } = revision.camera;\nif (Array.isArray(target) && Array.isArray(position)) {\n  // Create three.js objects\n  const positionVector = new THREE.Vector3(...position);\n  const targetVector = new THREE.Vector3(...target);\n  // Apply transformation matrix\n  positionVector.applyMatrix4(model.matrix);\n  targetVector.applyMatrix4(model.matrix);\n  // Set on viewer\n  viewer.setCameraPosition(positionVector);\n  viewer.setCameraTarget(targetVector);\n} else {\n  viewer.fitCameraToModel(model, 0);\n}\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n- [Cognite3DViewer](#cognite3dviewer)\n  - [Parameters](#parameters)\n  - [Examples](#examples)\n  - [dispose](#dispose)\n  - [domElement](#domelement)\n  - [isBrowserSupported](#isbrowsersupported)\n  - [on](#on)\n  - [off](#off)\n  - [addModel](#addmodel)\n  - [addObject3D](#addobject3d)\n  - [removeObject3D](#removeobject3d)\n  - [setSlicingPlanes](#setslicingplanes)\n  - [getCameraPosition](#getcameraposition)\n  - [getCameraTarget](#getcameratarget)\n  - [setCameraPosition](#setcameraposition)\n  - [setCameraTarget](#setcameratarget)\n  - [fitCameraToBoundingBox](#fitcameratoboundingbox)\n  - [disableKeyboardNavigation](#disablekeyboardnavigation)\n  - [enableKeyboardNavigation](#enablekeyboardnavigation)\n  - [fitCameraToModel](#fitcameratomodel)\n  - [worldToScreen](#worldtoscreen)\n  - [getIntersectionFromPixel](#getintersectionfrompixel)\n  - [getScreenshot](#getscreenshot)\n- [Intersection](#intersection)\n- [Cognite3DModel](#cognite3dmodel)\n  - [getSubtreeNodeIds](#getsubtreenodeids)\n  - [getBoundingBox](#getboundingbox)\n  - [iterateNodes](#iterateNodes)\n  - [iterateSubtree](#iterateSubtree)\n  - [getNodeColor](#getnodecolor)\n  - [setNodeColor](#setnodecolor)\n  - [resetNodeColor](#resetnodecolor)\n  - [selectNode](#selectnode)\n  - [deselectNode](#deselectnode)\n  - [deselectAllNodes](#deselectallnodes)\n  - [showNode](#shownode)\n  - [showAllNodes](#showallnodes)\n  - [hideAllNodes](#hideallnodes)\n  - [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n  - `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n  - `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n  - `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n  - `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n});\n```\n\n#### dispose\n\n- **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n- **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n- **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n  - `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n  - `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box.\n  - `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n  - `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox },\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>**\n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n- `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n- `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n- `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\n- **See: [getBoundingBox](#getboundingbox)**\n  Move camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n- `box` **THREE.Box3** \\-- The bounding box in world space\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n- `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n- **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n- **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n- **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n- `point` **THREE.Vector3** \\-- World space coordinate.\n- `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n- `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n- `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n- `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection)\n  // it was a hit\n  console.log(\n    'You hit model ',\n    intersection.model,\n    ' at the node with id ',\n    intersection.nodeId,\n    ' at this exact point ',\n    intersection.point\n  );\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n- `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n- `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n- `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n- `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3**\n\n#### iterateNodes\n\nGo through the node tree and apply an action to each node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await model.iterateNodes(console.log);\n```\n\n##### Parameters\n\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n\nReturns **void**\n\n#### iterateSubtree\n\nGo through the subtree a node of the tree and apply an action to each subtree node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await viewer.iterateSubtree(1111111111, console.log);\n```\n\n##### Parameters\n\n- `nodeId` **number** \\-- The id of the node whose subtree will have action applied to\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n- `treeIndex?` **number** \\-- (Optional) The index within the tree for the given nodeId\n- `subtreeSiuze?` **number** \\-- (Optional) The size of the subtree starting from nodeId\n\nReturns **Promise&lt;boolean>** Whether a valid nodeId was given or not\n\n#### getNodeColor\n\n- **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n- **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n- `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n- `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n- **See: [deselectNode](#deselectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n- **See: [selectNode](#selectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.16.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"idb":"^4.0.3","three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.12.2","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"^1.7.6","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_5.1.3-no-rings-or-cylinders_1564144249046_0.685993492503022","host":"s3://npm-registry-packages"}},"6.0.1":{"name":"@cognite/3d-viewer","version":"6.0.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.0.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"ev1stensberg","email":"evenstensberg@gmail.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"karper","email":"trygve.karper@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"96749846e69ab6417f9260177839c24800be3c1f","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.0.1.tgz","fileCount":5,"integrity":"sha512-AR1jTp2FiM/+jZuvpWfsoYhU35QmJ83J3A3Nyya+efrjjFYr+P2HDhT4CijBvpgqz8Olvi+XqVBpQ4yjMVxBpw==","signatures":[{"sig":"MEUCIQDps1FMeRdOppc/2kQRqQOxYbxbv32AqDDcLRK4xCEvrgIgW4piAr+5KtOIcoSpV0onZgdNbAlg8fgZUAoqY0HMvTc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214137,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdPuBvCRA9TVsSAnZWagAAcc0P/i3EmW40ccR6FpaALlaj\nE+4S9J3mVI3Jnlk1CuG2Pnj6WNerL7NAdwGINgARLqJ/15dtMSzkkPZiGzWK\nXLKWdxApkXx55phFjK+iZ83DA8t47YA6TeqWI1WfG9+FEpXXveM6XYJICHMJ\n1gd/9nYESPcBqB80yT/vaOAwtwLv+t47QDlD/Npms8SNlaUi66rDXYsAQh8w\n0/4aRs5wzl2+2uXc3FmKPfjqh8eMOYWbKLW/FKapzzJ6rD3zNg+eL5uy3FHg\nBG1hvkEHDel2Dnlji+OAMJnWTxrbwMpSPjTfBFUS5FRegufNbFlb3CLxaFaj\nl1SYHUgWcADxshpblMnBQ41cwL96fWW6i7p6/p0naEDQSlo03xD6ZUn+Dpup\nl/y3aRIIf3wBr1CrQuRnWoqHkCAl3Aywvrh/inVpewRjiaMh0ELIIavi1Pgu\nsXw81vXrxRbvRkLIt2iMXEtrVmSA4AcskdbROaAO0RQ++EyqAUtHX0ClgsO1\nZr9KDtszBILAv/vY7X1llsK8mUlBYlgWerk62Rd0nOEZPn9/lp8jpdbC1aBx\nER1gMpaiE9MLvmteUdk7YDS2DwUuVyqKtpIhMDwCqlmqRmmOFCeAKwEuBhxV\nhvWSyQvAUwxI068dp7Nh9slahn/sLYzD8hAgmx0ivNFb7Iwkr8mG8p7v25HE\nhxEo\r\n=l0Yb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"5379985b7169b30b642eaed8cb04a1cf5064f654","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"dlcognite","email":"david.liu@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.12.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"idb":"^4.0.3","three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.12.2","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.0.1_1564401774542_0.9871845182603114","host":"s3://npm-registry-packages"}},"6.0.2":{"name":"@cognite/3d-viewer","version":"6.0.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.0.2","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"ev1stensberg","email":"evenstensberg@gmail.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"karper","email":"trygve.karper@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"8903d9b006174abd16b93ef2d3553a96f07f4ad9","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.0.2.tgz","fileCount":5,"integrity":"sha512-pRbn8Hu7GPysiCyFM3WFQ0NvbUpKsTD7MhaCbeCvnnRgcEu0uqL89ZKgsHifzICtHtaLTGD2Nwfibl1/kNEfiw==","signatures":[{"sig":"MEYCIQD6f7JQkWP+qVIQL6BE+2acWFV9b53tq0NEZQMuAjUKYwIhAPXj2q8giosv/gbApwoeuUmLIC7dfoak2f7G1eQys7FY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQbd1CRA9TVsSAnZWagAAFpIP+wSkM2YiWZVRCY47tXW9\nhnfO0ud6x7bgVmwVlZ35SPe3amop3hVwfn6wwITRBzdxC9MOKGK6CAJoCkm8\nANSBWQS/s36CnoZlG1Hna+gsSSBKKGcink1EsCBZmX04J1ovnTF5ZsMw9EpZ\nnFPduakMQZRYsmNpVG7LaKiQLG9hVLc67UbpM6R/65ynF57iubVQN5xONKGc\nFy9HMZbiRhprmNgWcW7snyI3eqvqAHPMzKVaZAn4KEai7dTNS99LQayYJxCa\nrrdgbPaWG5ckLHT1DRc3Hj/Cx79pyi8txW/DNaVe/obuL1VuyPAMgM7igCm+\nmAlevl/Fhmc5Ztc2XYsX5ACCMWiV05qcbVZKwgUU8Srt1gL7BbaAlkwI9aPA\n2lgMPsF/+5C286nW2mUf36slh8K6N6peG3vknZJJxDiYvGSN7wZYnKG7ef8c\n8OG9Hc4XoZLJcyuQpgthT2+QtQikjYPQGbR/rIRJK9z8CO1/ZofBNzAAxAlr\nHEpd5o3Xo6jehR4X47UMJEGXMdNO34OPIsq/emZ9KOMoo3/8T5xT7+NAvu7X\nM+Lmi/bfP8LuQnq1GjvDcVawzGE4t91OSUD5b5/g84l/jBBtH2bFKrW+pU3N\nWz276YFNlhshRddwGoVK8t2T8mdHHXp/vZ00BLaFo94IVHHxcMyxQd3j/SIY\nskhm\r\n=UdV7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"173fb3f5f3f8c5f70c36d4a620760e2750af834c","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"dlcognite","email":"david.liu@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.13.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"idb":"^4.0.3","three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.12.2","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^1.4.8"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.0.2_1564587892688_0.8314134756461025","host":"s3://npm-registry-packages"}},"6.0.3":{"name":"@cognite/3d-viewer","version":"6.0.3","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.0.3","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"erikgrinaker","email":"erik@grinaker.org"},{"name":"ev1stensberg","email":"evenstensberg@gmail.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"karper","email":"trygve.karper@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"ed5488eea08375dbdcdeb489a55f961ae347b3a0","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.0.3.tgz","fileCount":5,"integrity":"sha512-lLaLvwWSzbphbBVyxycnm1Z+rarIA8OitUbCN/3826PovzOAgTkxOtCT4qNVBRszLFeM9mCf2oRKEMAa527FJQ==","signatures":[{"sig":"MEUCIBUL2vZ5VHC08cYG6C2vE1sdPd7j/pkMB9r6jZE5AY2rAiEA82TBrwMk7jbT2kx2zNk0AmkBIcKKmSo9qbXpv6k3Zyk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXCA/CRA9TVsSAnZWagAAUKsP/1hIautqbtCtQJNXLZ/O\nTG6ecaHkyNW4apNEWjzM4UTY2bReIjoBXeZz/nvXo6NZvfm/58wpOfsXB6hS\nU7vQfr7NKkL33Ce9cm1lScwG81ma8R2o8ByBIrSojZ1jpH3kvfRlRw5Ac6XE\nTmctzCKegSCEp3MVtMTUxqdngjXY3h7EfRHBdWwwQUHHa2uf1MeovONGth+H\n4U3/lX5UCD3baeXeZWHMhdVS8sM0dE9mvwKOwmvnwPhOR1OE7RMGQWq7cyBP\n4XfcSankhVMh2oY8D1BpJXYiXN0h1cBgbAdcQo3lgsWA/LaMVcEwD1bBl4jR\ntFeTcnsCVg8+3ynXLc7IlKVSa0MRLilB4Mqwqshu13XOr2Ih8ooirAiVcEkB\nK5Tn6mQ1HAn6IN/i55SWEajf8xolD8QcsYExeswmltVJH2PuUMKA/ytoh2z+\nSpNOc52dY87cR0uUkPPC4oEX/rBlPW/AEQTKlpaXWOKLQ8IG5Lw1/00yuqkp\n/t3tUpNglliEBI/w27nSU1h3DWKc44J0fr+E6mw8v4O1nudT9mQJMx4Ia4td\nsYJYqqPdtT2S3iTb+lLDyEDlK3YDXJU/icXYeOcZj6+j8LSSycHgNjfBa4mp\nRO8L1h+WHIs3RtYwK87ap4ycXtzmAHvzKKn8HQ8NGYfWUj3SH2lYl0i92fTv\ngihx\r\n=jBbp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","buildDocs":"documentation readme 'src/**' --section='API Reference' --format=md --access='public' && npm run validateDocLinks","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.16.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"idb":"^4.0.3","three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.12.2","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^2.1.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","documentation":"^8.0.0","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.9.0","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.0.3_1566318654184_0.5060959230965225","host":"s3://npm-registry-packages"}},"6.1.0-beta.0":{"name":"@cognite/3d-viewer","version":"6.1.0-beta.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.0-beta.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"eeexie","email":"emma.xie@cognite.com"},{"name":"erikgrinaker","email":"erik@grinaker.org"},{"name":"ev1stensberg","email":"evenstensberg@gmail.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joyrostie","email":"joyrostie@gmail.com"},{"name":"karper","email":"trygve.karper@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"satyajit-bhadange","email":"satyajit.bhadange@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"xitman78","email":"cherepnya.alexander@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"a756077e5d075eb9265c0c7313fe4d5e5e3b2c6f","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.0-beta.0.tgz","fileCount":5,"integrity":"sha512-BGXsGekgU1/EnsW4Qm0nqjWb0mys03iTcnW2SpPyP+K+DGAXU+sCJEVxrtj5oAMV3qRSrSgkP/JNDdsLBIsMDQ==","signatures":[{"sig":"MEUCIQChMKZZ3esyBLm1jtdSIMXhqL14M1dl+rxA2ORvVF1eiAIgHV8pWk5GtLEsBPZPuNlZKx3KoXQAPvljJzfA7WarcAc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219471,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZ48OCRA9TVsSAnZWagAASZEP/jmvHFtwBSI3AORUkR8D\njXWz1YK9066YHLZnQFFkUijK3tnKl7Ouo7nd/KN+0ukEKe2BQM6bKPWV2LY8\nbwySHbEsDMm6Ai8TRhBd1/d14Ha3ILWqqlEzCzkAkxeFPPLHgn1vqCVbAn7I\nDPqE7lLQuuwBnnvypJXeKDCDnK8cLrkmag9PBpfxPyTQPq39I1rAJDvJsahM\nBHQ/fwiL2kqUwE8h8tKO+5xMDT/uTPB1/HpU5jk6vITU0mElmNqXeP9liuO+\nb1252EpPH81BGCZMDMrq7/jYWhtBTXiqf4rQponMHEKDaETMBrFWn1/eZ+Sd\nZho54jV2P4JHeZvTJeWcpE9xCxu9QuysbCHNnjWBEFwpeKPKYj5wYIgFCndl\n7DzriibXAHw2F0Zg/F/48N2vjRnv9OoEeLwwad+4gNJGRGmYRwIs0diUhBro\n1j/upqii58UyKSiQauui24FLhEYqgbVBJ85GX1YgnTI0ulum9Nj3CKpwq4ZF\nWCaPVJOqJhbUcN5ii3WW/qJrvqFlcr+OR/ESQFftZu3RGPWvU8ppVrDcRlPp\nIANL89ACjYMt65WK0t8jfa/HQe1snX/Qi56h1NWjLOQAalzvq4dAjhoconUZ\n8SgMPQlUV0ZrfA4sxqAQpbAlywkOzpFiFg7Ktw36ANosD/HKriwitRuzTJgj\neiUH\r\n=FKnI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n\n## Table of Contents\n\n- [Install](#install)\n- [Cognite Data Fusion](#cognite-data-fusion)\n- [Usage](#usage)\n  - [Sample code](#sample-code)\n    - [Add progress listeners](#add-progress-listeners)\n    - [Make the model clickable](#make-the-model-clickable)\n- [API Reference](#api-reference)\n- [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n//  If you are loading a local file, then just pass it in the localPath when you addModel:\nconst viewer = new Cognite3DViewer();\n// If you are loading more than just local file, you would need to specify a sdk:\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) })\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n- [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\nAdding model from CDF\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) });\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId, // 3D model id\n  revisionId, // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nAdding local model\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  localPath: '...',\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n>  {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n- **See: [getBoundingBox](#getboundingbox)**\n- **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n- **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\nconst { target, position } = revision.camera;\nif (Array.isArray(target) && Array.isArray(position)) {\n  // Create three.js objects\n  const positionVector = new THREE.Vector3(...position);\n  const targetVector = new THREE.Vector3(...target);\n  // Apply transformation matrix\n  positionVector.applyMatrix4(model.matrix);\n  targetVector.applyMatrix4(model.matrix);\n  // Set on viewer\n  viewer.setCameraPosition(positionVector);\n  viewer.setCameraTarget(targetVector);\n} else {\n  viewer.fitCameraToModel(model, 0);\n}\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n- [Cognite3DViewer](#cognite3dviewer)\n  - [Parameters](#parameters)\n  - [Examples](#examples)\n  - [dispose](#dispose)\n  - [domElement](#domelement)\n  - [isBrowserSupported](#isbrowsersupported)\n  - [on](#on)\n  - [off](#off)\n  - [addModel](#addmodel)\n  - [addObject3D](#addobject3d)\n  - [removeObject3D](#removeobject3d)\n  - [setSlicingPlanes](#setslicingplanes)\n  - [getCameraPosition](#getcameraposition)\n  - [getCameraTarget](#getcameratarget)\n  - [setCameraPosition](#setcameraposition)\n  - [setCameraTarget](#setcameratarget)\n  - [fitCameraToBoundingBox](#fitcameratoboundingbox)\n  - [disableKeyboardNavigation](#disablekeyboardnavigation)\n  - [enableKeyboardNavigation](#enablekeyboardnavigation)\n  - [fitCameraToModel](#fitcameratomodel)\n  - [worldToScreen](#worldtoscreen)\n  - [getIntersectionFromPixel](#getintersectionfrompixel)\n  - [getScreenshot](#getscreenshot)\n- [Intersection](#intersection)\n- [Cognite3DModel](#cognite3dmodel)\n  - [getSubtreeNodeIds](#getsubtreenodeids)\n  - [getBoundingBox](#getboundingbox)\n  - [iterateNodes](#iterateNodes)\n  - [iterateSubtree](#iterateSubtree)\n  - [getNodeColor](#getnodecolor)\n  - [setNodeColor](#setnodecolor)\n  - [resetNodeColor](#resetnodecolor)\n  - [selectNode](#selectnode)\n  - [deselectNode](#deselectnode)\n  - [deselectAllNodes](#deselectallnodes)\n  - [showNode](#shownode)\n  - [showAllNodes](#showallnodes)\n  - [hideAllNodes](#hideallnodes)\n  - [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n  - `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n  - `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n  - `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n  - `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n  sdk: <Instance of CogniteClient>\n});\n```\n\n#### dispose\n\n- **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n- **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n- **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n  - `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n  - `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box.\n  - `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n  - `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox },\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>**\n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n- `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n- `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n- `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\n- **See: [getBoundingBox](#getboundingbox)**\n  Move camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n- `box` **THREE.Box3** \\-- The bounding box in world space\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n- `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n- **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n- **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n- **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n- `point` **THREE.Vector3** \\-- World space coordinate.\n- `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n- `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n- `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n- `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection)\n  // it was a hit\n  console.log(\n    'You hit model ',\n    intersection.model,\n    ' at the node with id ',\n    intersection.nodeId,\n    ' at this exact point ',\n    intersection.point\n  );\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n- `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n- `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n- `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n- `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3**\n\n#### iterateNodes\n\nGo through the node tree and apply an action to each node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await model.iterateNodes(console.log);\n```\n\n##### Parameters\n\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n\nReturns **void**\n\n#### iterateSubtree\n\nGo through the subtree a node of the tree and apply an action to each subtree node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await viewer.iterateSubtree(1111111111, console.log);\n```\n\n##### Parameters\n\n- `nodeId` **number** \\-- The id of the node whose subtree will have action applied to\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n- `treeIndex?` **number** \\-- (Optional) The index within the tree for the given nodeId\n- `subtreeSiuze?` **number** \\-- (Optional) The size of the subtree starting from nodeId\n\nReturns **Promise&lt;boolean>** Whether a valid nodeId was given or not\n\n#### getNodeColor\n\n- **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n- **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n- `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n- `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n- **See: [deselectNode](#deselectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n- **See: [selectNode](#selectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.16.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"idb":"^4.0.3","three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.13.0","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^5.0.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.18.2","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.0-beta.0_1567067917360_0.2594772428293488","host":"s3://npm-registry-packages"}},"6.1.0":{"name":"@cognite/3d-viewer","version":"6.1.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"erikgrinaker","email":"erik@grinaker.org"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joshua.allum","email":"joshua.allum@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"larsmoa","email":"lars.moastuen@cognite.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"melike.ercan","email":"melike.ercan@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"sebbert-cognite","email":"sebastian.reinhard@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"2b22b181465c5b993fce0069c8fa0018393fed4a","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.0.tgz","fileCount":5,"integrity":"sha512-TA4vmp2lDO1IgXkAXmBMrVpjH9A3vwekK97wNqcQdcnPaxw2xpVrsBWdXJzYpjIUE/zUI23V2WxPKflaZfQ7RA==","signatures":[{"sig":"MEQCID3cwvLGQKYI4UiflgBneCpP10wC54nFfcdzbcDus7KKAiA5VGfwCWQqaone0a0vo/h+dQ0GD83UBEJxHygm/jls9g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219305,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkgzkCRA9TVsSAnZWagAA/UgP/1Hh7y8Nb3qv8Xm1A3Sh\nqm3KvyLFwNqaIubdpRGupQsEABNxdh2n1ugwbWnp5Pw3/Tl1ZqfJMRsg5YHh\nN9UVU/9fanpeS2SvlOj/aAk0NnobCRRaIqPXSBBYBPEMp05/vkMg/0i9iEnn\ncherHDFTZB5EQAOh8P1qa6xTEilIs7fbvexlmPEvoj4xoWb/1dfWkjsWGKEb\nAW008OPTYEBcnSxSkJpgDz/1Fsavk6gJpCzRzvVsA2bM5OXAHqXVAGWdgVKa\n6SypZ/oqIvIg1fBq06hcuyrvp68117buA7X+wJiT38FL+2lrJL3E6I++YuUU\n5eKUcwtMbZ0jXV6jrEvWLcrapSzPmqJnBycZQnEpETm1NYQnCo6/6znzAxFq\nZ75Ip7EF1lxQJCDM4gkAgJ2/rPN9i9Zt9WSl6uWJSqHniscyGqZZdlvqm8m8\ncj6SPpkJUqx4XXDXn/ztT/PcGwRAb2Oq3uoOC4xyOJFbJd+azdUWiR4mqU+N\nXjCxvAj1I61ZHmSEjiOPI63DpoO+L5LcbiGhpALZCEejGmcHLljIL2TK0Ts4\nG3JOEGM5G9AHBXn827CvCEjXAmOgQaOg9GZN3g8fPC3QnsL5sYnSbGKFy4kq\nypmQsmsGM4EhBau+iqWPZrEueiphQuPOTOcZVxHIWMv//bdWnl5mEa9yrgO0\nSbot\r\n=WQGg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.16.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.13.2","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"devDependencies":{"idb":"^4.0.3","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^5.0.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.18.2","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.0_1569852643025_0.5418029670528246","host":"s3://npm-registry-packages"}},"6.1.1-beta.0":{"name":"@cognite/3d-viewer","version":"6.1.1-beta.0","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.1-beta.0","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"erikgrinaker","email":"erik@grinaker.org"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joshua.allum","email":"joshua.allum@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"larsmoa","email":"lars.moastuen@cognite.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"melike.ercan","email":"melike.ercan@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"sebbert-cognite","email":"sebastian.reinhard@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"b97c1a8572b000162a6272e6de508d94b882d981","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.1-beta.0.tgz","fileCount":5,"integrity":"sha512-1b/AVgq29q94xTq4P7NkrP9e57c5SXnqXYmKPc22km7hf4Y5a+sVP6XhMpCClcSBwxcd9LK2zstwcxxFscSmyg==","signatures":[{"sig":"MEUCIQD0Tr+jHoH+FQBZKcJshwoWYNLuIK3yFMHkwY+q1k4/4AIgP68CiV2UzuVp7VTIuGG2ZDstjDcP7nBK0DlvnPYMRBI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":223139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdm0UcCRA9TVsSAnZWagAA56sP/iIzC05bpR9J7qJnBk+h\nb2X1zMX5UJotb8dTBgnKveCbL3tR2CBCay5c+N/y06Xo4SS4kL1qrwF0mUaF\nlmoIhUYM+qB6doEWALUR6pCKqJwnZBkC5ldaY4K01WzcQHNw2c4kts+SFceN\nHcv+V9ftu+NidRIgWMfjrYk8qbOxsLEYkW+CAPYcDwsiy/DUs+/3tpxI9/bT\n6dPJsMw0/ONKHpFVfUMNHOPAJn/tq0H49/DKQdTxF82QAYuHg7+BZWvqahSp\ngmw602J7pB8PXp7qF9YzZBjUwDEObAM0KK7rlxlUMDHvbX6KiwycLkN/dE81\n5n2lov/3uwmjLtSofMEH84F76NHYU0hpncX5xIFcaAGGYX8RGwTeu128nfEp\nGYNrCasJU6dUeZA2yC4ZjzoOK9jf/vi47ykUwtsY7l5hsOzirBGWp87x499V\nAp9GiF9kZr152RnfHWznTujUYUvbJml3tK0itz3vjJxdrpPx2N9GI/9pjMDv\nDaoHDmU/F05t+BQp30ttNNEDGEnjfusV62QopgJroAt8jbEwgnfEns0vNKbi\nTO/myw/8swvjLEkLq57fdktk6qdCVHozs3dc7oAH9g7PwfP9Plet7k6Csx+t\nYmN8PkECLlfpyfa/k8xh/46JrGRdlaSCslZQTSOSufEvLGWP7XYiXWbzB8A8\nAIf2\r\n=IWuN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n\n## Table of Contents\n\n- [Install](#install)\n- [Cognite Data Fusion](#cognite-data-fusion)\n- [Usage](#usage)\n  - [Sample code](#sample-code)\n    - [Add progress listeners](#add-progress-listeners)\n    - [Make the model clickable](#make-the-model-clickable)\n- [API Reference](#api-reference)\n- [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n//  If you are loading a local file, then just pass it in the localPath when you addModel:\nconst viewer = new Cognite3DViewer();\n// If you are loading more than just local file, you would need to specify a sdk:\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) })\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n- [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\nAdding model from CDF\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) });\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId, // 3D model id\n  revisionId, // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nAdding local model\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  localPath: '...',\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n>  {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n- **See: [getBoundingBox](#getboundingbox)**\n- **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n- **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\nconst { target, position } = revision.camera;\nif (Array.isArray(target) && Array.isArray(position)) {\n  // Create three.js objects\n  const positionVector = new THREE.Vector3(...position);\n  const targetVector = new THREE.Vector3(...target);\n  // Apply transformation matrix\n  positionVector.applyMatrix4(model.matrix);\n  targetVector.applyMatrix4(model.matrix);\n  // Set on viewer\n  viewer.setCameraPosition(positionVector);\n  viewer.setCameraTarget(targetVector);\n} else {\n  viewer.fitCameraToModel(model, 0);\n}\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n- [Cognite3DViewer](#cognite3dviewer)\n  - [Parameters](#parameters)\n  - [Examples](#examples)\n  - [dispose](#dispose)\n  - [domElement](#domelement)\n  - [isBrowserSupported](#isbrowsersupported)\n  - [on](#on)\n  - [off](#off)\n  - [addModel](#addmodel)\n  - [addObject3D](#addobject3d)\n  - [removeObject3D](#removeobject3d)\n  - [setSlicingPlanes](#setslicingplanes)\n  - [getCameraPosition](#getcameraposition)\n  - [getCameraTarget](#getcameratarget)\n  - [setCameraPosition](#setcameraposition)\n  - [setCameraTarget](#setcameratarget)\n  - [fitCameraToBoundingBox](#fitcameratoboundingbox)\n  - [disableKeyboardNavigation](#disablekeyboardnavigation)\n  - [enableKeyboardNavigation](#enablekeyboardnavigation)\n  - [fitCameraToModel](#fitcameratomodel)\n  - [worldToScreen](#worldtoscreen)\n  - [getIntersectionFromPixel](#getintersectionfrompixel)\n  - [getScreenshot](#getscreenshot)\n- [Intersection](#intersection)\n- [Cognite3DModel](#cognite3dmodel)\n  - [getSubtreeNodeIds](#getsubtreenodeids)\n  - [getBoundingBox](#getboundingbox)\n  - [iterateNodes](#iterateNodes)\n  - [iterateSubtree](#iterateSubtree)\n  - [getNodeColor](#getnodecolor)\n  - [setNodeColor](#setnodecolor)\n  - [resetNodeColor](#resetnodecolor)\n  - [selectNode](#selectnode)\n  - [deselectNode](#deselectnode)\n  - [deselectAllNodes](#deselectallnodes)\n  - [showNode](#shownode)\n  - [showAllNodes](#showallnodes)\n  - [hideAllNodes](#hideallnodes)\n  - [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n  - `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n  - `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n  - `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n  - `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n  sdk: <Instance of CogniteClient>\n});\n```\n\n#### dispose\n\n- **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n- **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n- **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n  - `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n  - `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box.\n  - `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n  - `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox },\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>**\n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n- `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n- `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n- `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\n- **See: [getBoundingBox](#getboundingbox)**\n  Move camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n- `box` **THREE.Box3** \\-- The bounding box in world space\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n- `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n- **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n- **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n- **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n- `point` **THREE.Vector3** \\-- World space coordinate.\n- `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n- `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n- `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n- `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection)\n  // it was a hit\n  console.log(\n    'You hit model ',\n    intersection.model,\n    ' at the node with id ',\n    intersection.nodeId,\n    ' at this exact point ',\n    intersection.point\n  );\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n- `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n- `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n- `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n- `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3**\n\n#### iterateNodes\n\nGo through the node tree and apply an action to each node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await model.iterateNodes(console.log);\n```\n\n##### Parameters\n\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n\nReturns **void**\n\n#### iterateSubtree\n\nGo through the subtree a node of the tree and apply an action to each subtree node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await viewer.iterateSubtree(1111111111, console.log);\n```\n\n##### Parameters\n\n- `nodeId` **number** \\-- The id of the node whose subtree will have action applied to\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n- `treeIndex?` **number** \\-- (Optional) The index within the tree for the given nodeId\n- `subtreeSiuze?` **number** \\-- (Optional) The size of the subtree starting from nodeId\n\nReturns **Promise&lt;boolean>** Whether a valid nodeId was given or not\n\n#### getNodeColor\n\n- **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n- **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n- `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n- `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n- **See: [deselectNode](#deselectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n- **See: [selectNode](#selectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.4.1","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"8.16.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.13.2","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"idb":"^4.0.3","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^5.0.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.18.2","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.1-beta.0_1570456859463_0.16284035311203304","host":"s3://npm-registry-packages"}},"6.1.1":{"name":"@cognite/3d-viewer","version":"6.1.1","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.1","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"erikgrinaker","email":"erik@grinaker.org"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joshua.allum","email":"joshua.allum@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"larsmoa","email":"lars.moastuen@cognite.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"melike.ercan","email":"melike.ercan@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"sebbert-cognite","email":"sebastian.reinhard@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"52f7dbae9095a0e59253fd74cafbf8339e2b08e1","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.1.tgz","fileCount":5,"integrity":"sha512-iHf7BjqbVnTJT1gd+sSn9hJYbpQc95ieCD/8oKY4h4/S78xHvnAOB5oguGBT2YRX8F+ufE0C5YIe0JVnsPtDSg==","signatures":[{"sig":"MEQCIGpkAnWWxyWcTBiINz7QqSo4eKuV+mjqvxhHVQHZoRrGAiANt5pBny5eMV16x8BpSnUaDCGzpb28RSXcGuJ+jg/RdQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdpD00CRA9TVsSAnZWagAAWD0P/iYDrs+S586mm6MjHCtp\nLbmSooHmhlI8IB5oM5A0PPSMJOrffxofo5Dbp0qtexNg7PsDnqb+w4j8U4GM\n7W1tvkPzQ6GI2SufzhDyo0BWQRIiCSNKJjBGOvM9ayHSe1shG4Pwt9sQ3V1o\nbvOyYccH5kxvrwL4tWkzEMwonR1wDslRrnN+vzr/deSVDBuxMhp5nDtWR70V\nAN8wrhPagwh05H+gARoVdZnD4gBg4yjJ/ynZC9H47K77Kf7d4SH8jlL/ek74\nX/VJHs2B1Xy7aF+4GaG+IqzvpAeF/lzRsyU+RAxm3Mh/Zl6LjuEHVZOgrgv0\nOthlq8Y5UrwghPtPO1eMD9GMpRtjgre1Ob23mn5nZhBWUwbUjZOnwcEDwMp0\nQsLLI32F1O+EYi6uF06ezNrOlLBD9wHy6J07vHuzusHtOxA9nle/6v1in1I+\noovSLp/K7p/0wCtAT2EzS2obGVvEEwuuMOSP+WeFWO5KP3sI3veTMtw9KBB0\nC4oBCIO77PM+U1+bFZkljuMAuhZ9Ngk7lQsG4ihz/vyqGQMhge7xDn8LqcTf\nvG3iwwgzqaNUFt5zcMk4E0vTkXJ5dFDLGOMd7tmqKYeVaa22SFwvI63m8D30\nB5N5yIt0dUdLQ81jdtjQIQ/7lXUMATBowZADGzgRxiS8leM7YNFhUpQHdIx0\nJC3d\r\n=+7La\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"larsmoa","email":"lars.moastuen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"10.16.3","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.13.4","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"devDependencies":{"idb":"^4.0.3","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^5.0.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.18.2","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.1_1571044658755_0.7298447826627772","host":"s3://npm-registry-packages"}},"6.1.2":{"name":"@cognite/3d-viewer","version":"6.1.2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.2","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"erikgrinaker","email":"erik@grinaker.org"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joshua.allum","email":"joshua.allum@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"larsmoa","email":"lars.moastuen@cognite.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"melike.ercan","email":"melike.ercan@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"sebbert-cognite","email":"sebastian.reinhard@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"73002685fc50f6d4f5457892db1edd2ceb6b7a7f","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.2.tgz","fileCount":5,"integrity":"sha512-osRW+50+3kiLXAk+4IZnHHOhI13Uyyw9LpabJsPMV/cjuoG4afBxUARjaotbVvy8p4l6vrSk6yRLFAwDikmFLQ==","signatures":[{"sig":"MEUCIQDuwWQgU9XMXax7JKk9h98QhYSqzI8UO+KLaGn28hO3bQIgJOW3TjddlEo3L4bJt59sD6+tnmNK4cmmxdF1DryylHg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":222753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdpYGOCRA9TVsSAnZWagAAZjQP/1W7ICaWm1zZFsQ4+vXE\nUWL9oyd6binjtzjh1aphF7pICYiJ21qmI132F53kWyD2kh2XJ/F459O9JkjZ\nCEXTS/ItAI7PQZLDnZnfk6WKXFKUO7SobQpoNJ4vHulV8VJurf7w8z/OURxP\nASY2JTI9SlGpVKFv7Bqmbn64B6B4y9+IQLzbpgQ0/haOXvUWVy/U7bokGftV\nPiZyoOCPPCaYnln4Z0mRajHUjQP6BinRoJJMHXYpdi7B3De5ceyotvkYGIPp\nPh5poj0mDZNrjkIbrEaQ3ufDfkmrUqxTwJgtEbgVuSN07eV13FZulH1h916b\nUbAZoN0WZD3+C6LjHnO+tJxD+A+hdpsjRrNA0bVQhTJ4D1GEAXowAXOSGB11\nQD/Cl3yfucxE4KkZO+pTFQXeAHitf66ajDzNTiZw7alax3SR8ecsvC4XWyoS\nVVKQSKYk3DoZfxaf1DCPrCdCtE+wMQhi98jO0ZQI1vJAUCg1XVo9mbM/k7nL\nzupvY1NwjSA4RVN/nGbEEvtkZgV1Fc8dfWPf+CNctCGtaZl8/eZDZ2yGRm4K\nhX/vhdiHrffXmhOFyGeO+7V34J0ylZYkp0zVZvr9FNB6UVAuBu7GpUFTs+Ep\n6vodva0U/CZC6x420obrXmLkKkqILRSkQURKXXNvT8/DllsJYfc0IMg6Uer8\nRmvK\r\n=NIhD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"10.16.1","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.13.4","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"devDependencies":{"idb":"^4.0.3","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^5.0.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.18.2","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.2_1571127693565_0.4398984416088412","host":"s3://npm-registry-packages"}},"6.1.2-cache-with-bounding-box":{"name":"@cognite/3d-viewer","version":"6.1.2-cache-with-bounding-box","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.2-cache-with-bounding-box","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"austin-cognite","email":"austin.moninger@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"bellamoo","email":"william.andrews@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"erikgrinaker","email":"erik@grinaker.org"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joshua.allum","email":"joshua.allum@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"larsmoa","email":"lars.moastuen@cognite.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"melike.ercan","email":"melike.ercan@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nalaka","email":"nalakajayasena@gmail.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"sebbert-cognite","email":"sebastian.reinhard@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"trygve.utstumo","email":"trygve.utstumo@cognite.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"vivagable","email":"aviv.elbag@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"b2f47a3b4a180abe1c4c34608ca6c71b0ad6d8c8","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.2-cache-with-bounding-box.tgz","fileCount":5,"integrity":"sha512-tCfHnDrwqHPzQpnriQYJb2clFHk2SkwdYJOMx55X1jEmFQuL7n/vy2m8nmr/QiOOicLiGvJt4SrubQAHPd5EXA==","signatures":[{"sig":"MEUCIHE33sdX+/CzAYhezPVuS2k9hqAa/mK9MsEnD36xd17/AiEA/i14B1KHIXz7DCCS1TYjPeHWDpk3wBPhvZ5u35pD0f8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":223561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdxTgJCRA9TVsSAnZWagAAFQsQAInOeZFJj5qXdRYsD2rA\nZIMLLlBHLByQMJnGS4uvzJOSQhq71a/ML6Z4aLprWxsUinKgUNuUiSmRszT4\nWvyCMoKwEQaMBNG6QDNQBH/BYcCTIQyVAEDPuNIUEtSFB76SBb7SkITkUcJ1\nfYKu5MxyT+bvJ1dPMdj2jQVQGbK9HKgvPUjhXIu1RMlj+CKxWPyEUaKJ2O8s\nMGEc5F+ZnV94/niDkuUV/ZhOZ0CGSb0fufHvapo+s6QXMWxVYNrl7dIiEKMd\nvWA7W+ZJobMrCx/NONLtrbClTQObEFNBoUdFPHJ+1IRG78vmKBRgeSD38QbZ\nZtENUh975tMDgoGTP3B0LF/j5m54ceUibvaSOBz/DfhV54u1QYE0GpZRc449\nb/0gyOgvCom/2QWENhL8pZQFwd9nLbhQ6YEVIzwRsHFLe+wQSs4YzGQOy0rs\nahs7uPG10Bq4nlgA0MvWT59DwAEMn/cg0o3txVdfqpzn5VDsvdBHMD0agOns\npINA4B+xu37Qo0MD5P/gJQrnXmRd1M6/ZWNAxXmbiqsuxeMwZwW9FudcA+nC\n3KTe2utxlhWlKESi5AfNvhis2TNV3hd3Kn+bR+FGcZXcuZlYIKqp5l+8eAs/\nXR2TnIP8AcaR0yvRzz8/Ptx4AMEjS/qr1brkGUAcqy1p/E6L9hk7LgGNLkum\neA0+\r\n=KKDI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n\n## Table of Contents\n\n- [Install](#install)\n- [Cognite Data Fusion](#cognite-data-fusion)\n- [Usage](#usage)\n  - [Sample code](#sample-code)\n    - [Add progress listeners](#add-progress-listeners)\n    - [Make the model clickable](#make-the-model-clickable)\n- [API Reference](#api-reference)\n- [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n//  If you are loading a local file, then just pass it in the localPath when you addModel:\nconst viewer = new Cognite3DViewer();\n// If you are loading more than just local file, you would need to specify a sdk:\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) })\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n- [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\nAdding model from CDF\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) });\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId, // 3D model id\n  revisionId, // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nAdding local model\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  localPath: '...',\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n>  {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n- **See: [getBoundingBox](#getboundingbox)**\n- **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n- **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\nconst { target, position } = revision.camera;\nif (Array.isArray(target) && Array.isArray(position)) {\n  // Create three.js objects\n  const positionVector = new THREE.Vector3(...position);\n  const targetVector = new THREE.Vector3(...target);\n  // Apply transformation matrix\n  positionVector.applyMatrix4(model.matrix);\n  targetVector.applyMatrix4(model.matrix);\n  // Set on viewer\n  viewer.setCameraPosition(positionVector);\n  viewer.setCameraTarget(targetVector);\n} else {\n  viewer.fitCameraToModel(model, 0);\n}\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n- [Cognite3DViewer](#cognite3dviewer)\n  - [Parameters](#parameters)\n  - [Examples](#examples)\n  - [dispose](#dispose)\n  - [domElement](#domelement)\n  - [isBrowserSupported](#isbrowsersupported)\n  - [on](#on)\n  - [off](#off)\n  - [addModel](#addmodel)\n  - [addObject3D](#addobject3d)\n  - [removeObject3D](#removeobject3d)\n  - [setSlicingPlanes](#setslicingplanes)\n  - [getCameraPosition](#getcameraposition)\n  - [getCameraTarget](#getcameratarget)\n  - [setCameraPosition](#setcameraposition)\n  - [setCameraTarget](#setcameratarget)\n  - [fitCameraToBoundingBox](#fitcameratoboundingbox)\n  - [disableKeyboardNavigation](#disablekeyboardnavigation)\n  - [enableKeyboardNavigation](#enablekeyboardnavigation)\n  - [fitCameraToModel](#fitcameratomodel)\n  - [worldToScreen](#worldtoscreen)\n  - [getIntersectionFromPixel](#getintersectionfrompixel)\n  - [getScreenshot](#getscreenshot)\n- [Intersection](#intersection)\n- [Cognite3DModel](#cognite3dmodel)\n  - [getSubtreeNodeIds](#getsubtreenodeids)\n  - [getBoundingBox](#getboundingbox)\n  - [iterateNodes](#iterateNodes)\n  - [iterateSubtree](#iterateSubtree)\n  - [getNodeColor](#getnodecolor)\n  - [setNodeColor](#setnodecolor)\n  - [resetNodeColor](#resetnodecolor)\n  - [selectNode](#selectnode)\n  - [deselectNode](#deselectnode)\n  - [deselectAllNodes](#deselectallnodes)\n  - [showNode](#shownode)\n  - [showAllNodes](#showallnodes)\n  - [hideAllNodes](#hideallnodes)\n  - [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n  - `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n  - `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n  - `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n  - `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n  sdk: <Instance of CogniteClient>\n});\n```\n\n#### dispose\n\n- **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n- **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n- **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n  - `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n  - `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box.\n  - `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n  - `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox },\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>**\n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n- `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n- `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n- `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\n- **See: [getBoundingBox](#getboundingbox)**\n  Move camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n- `box` **THREE.Box3** \\-- The bounding box in world space\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n- `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n- **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n- **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n- **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n- `point` **THREE.Vector3** \\-- World space coordinate.\n- `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n- `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n- `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n- `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection)\n  // it was a hit\n  console.log(\n    'You hit model ',\n    intersection.model,\n    ' at the node with id ',\n    intersection.nodeId,\n    ' at this exact point ',\n    intersection.point\n  );\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n- `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n- `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n- `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n- `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3**\n\n#### iterateNodes\n\nGo through the node tree and apply an action to each node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await model.iterateNodes(console.log);\n```\n\n##### Parameters\n\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n\nReturns **void**\n\n#### iterateSubtree\n\nGo through the subtree a node of the tree and apply an action to each subtree node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await viewer.iterateSubtree(1111111111, console.log);\n```\n\n##### Parameters\n\n- `nodeId` **number** \\-- The id of the node whose subtree will have action applied to\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n- `treeIndex?` **number** \\-- (Optional) The index within the tree for the given nodeId\n- `subtreeSiuze?` **number** \\-- (Optional) The size of the subtree starting from nodeId\n\nReturns **Promise&lt;boolean>** Whether a valid nodeId was given or not\n\n#### getNodeColor\n\n- **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n- **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n- `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n- `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n- **See: [deselectNode](#deselectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n- **See: [selectNode](#selectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"10.16.1","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^18.3.1","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.13.4","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"idb":"^4.0.3","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^6.5.1","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^5.0.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^6.2.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.9.0","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.18.2","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.2-cache-with-bounding-box_1573206024658_0.15390208234970837","host":"s3://npm-registry-packages"}},"6.1.2-torus-normal-fix":{"name":"@cognite/3d-viewer","version":"6.1.2-torus-normal-fix","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.2-torus-normal-fix","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"austin-cognite","email":"austin.moninger@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"bellamoo","email":"william.andrews@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"erikgrinaker","email":"erik@grinaker.org"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joshua.allum","email":"joshua.allum@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"kylling","email":"jonas.kylling@cognite.com"},{"name":"larsmoa","email":"lars.moastuen@cognite.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"melike.ercan","email":"melike.ercan@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nalaka","email":"nalakajayasena@gmail.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"sebbert-cognite","email":"sebastian.reinhard@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"trygve.utstumo","email":"trygve.utstumo@cognite.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"80e7ceb5dba950e0ae5c80884c8df271a2107f64","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.2-torus-normal-fix.tgz","fileCount":5,"integrity":"sha512-kdgJOJKg07xeb2AisyJ1eYQ4Zt4CCjR3Jz/1dNiJ+q0Siqgu6TqQDJ9HOCb7WXTPIG70c4EhsRzf2L6bTa1fuA==","signatures":[{"sig":"MEQCIAtDej17fPaezMl/pX6Gvxdmo/K3pLfzYTDMgRyJwKsNAiBSCkQqpbW9oEcOEuhbT/U1IwamjsAqxTj8Fxdc97ST5Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1062103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzTmcCRA9TVsSAnZWagAA3j0QAIwXZCfrMlhCDgyqDtDl\nlp6RJWjHut9nHE7giypjSMk0dsJjJ1SCAcmdUxVZOpHVlRnLCD6WYi2QuBQq\n7djAYFhu55sUVk9KyVcIhzrcl04mvem/uyF1ZVfUFtB3U/J5tPLQsEd6Zk84\nAt2mKYyN+y0NFlMpIDEQlm9vvpswxlvFuY8SLlAgwBNapNMI+VKuRMFdaqj1\nTPqy1CFKtHrqVC4prRGqcYuL3RWQgHcTdhXozfKGfDfxfpwZOlNJmXcNx6Ix\nRsWJ67une/ndpzCc7qoTIWlLNK1ENhxXlTp4uJhZGXbKfYdHJntL6a8SGVKY\n6a0K17LlbJvfruezWGu3nX4/N0Z8jvfD1zVeyzd9VOVo3ayeQrI/3JxJAWfU\nwuEFBzQtZDLQxpei690ysGu4I4WJgbH9F4GJ7wGNVX6zEd73XGXg0jk4egsb\ndzop2ZEKe8S/X25B6WrlE3evDH/2xZLxb1F/hvn3eE4qEllOcqEI2QNrKEdk\nRU3nZtFeSaKhm1L0zZEgBXIQfMx8SmHIcYmSK9Oa+e37PzTwkFFRcV6OgIal\nMN8dSVzgLHsK6u4hLbMH4mgOjOehREQUtgfi1pS27+4l2PZUD+WmoXt3wy9H\n+1buzTaAw/icRNqmYEsOLNCnqChGRd1oWkTjVxt22m26rt0+sf2eeSLY3Nc6\no9F6\r\n=YX5X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","husky":{"hooks":{"pre-push":"npm run lint"}},"types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n\n## Table of Contents\n\n- [Install](#install)\n- [Cognite Data Fusion](#cognite-data-fusion)\n- [Usage](#usage)\n  - [Sample code](#sample-code)\n    - [Add progress listeners](#add-progress-listeners)\n    - [Make the model clickable](#make-the-model-clickable)\n- [API Reference](#api-reference)\n- [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n//  If you are loading a local file, then just pass it in the localPath when you addModel:\nconst viewer = new Cognite3DViewer();\n// If you are loading more than just local file, you would need to specify a sdk:\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) })\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n- [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\nAdding model from CDF\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) });\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId, // 3D model id\n  revisionId, // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nAdding local model\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  localPath: '...',\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n>  {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n- **See: [getBoundingBox](#getboundingbox)**\n- **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n- **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\nconst { target, position } = revision.camera;\nif (Array.isArray(target) && Array.isArray(position)) {\n  // Create three.js objects\n  const positionVector = new THREE.Vector3(...position);\n  const targetVector = new THREE.Vector3(...target);\n  // Apply transformation matrix\n  positionVector.applyMatrix4(model.matrix);\n  targetVector.applyMatrix4(model.matrix);\n  // Set on viewer\n  viewer.setCameraPosition(positionVector);\n  viewer.setCameraTarget(targetVector);\n} else {\n  viewer.fitCameraToModel(model, 0);\n}\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n- [Cognite3DViewer](#cognite3dviewer)\n  - [Parameters](#parameters)\n  - [Examples](#examples)\n  - [dispose](#dispose)\n  - [domElement](#domelement)\n  - [isBrowserSupported](#isbrowsersupported)\n  - [on](#on)\n  - [off](#off)\n  - [addModel](#addmodel)\n  - [addObject3D](#addobject3d)\n  - [removeObject3D](#removeobject3d)\n  - [setSlicingPlanes](#setslicingplanes)\n  - [getCameraPosition](#getcameraposition)\n  - [getCameraTarget](#getcameratarget)\n  - [setCameraPosition](#setcameraposition)\n  - [setCameraTarget](#setcameratarget)\n  - [fitCameraToBoundingBox](#fitcameratoboundingbox)\n  - [disableKeyboardNavigation](#disablekeyboardnavigation)\n  - [enableKeyboardNavigation](#enablekeyboardnavigation)\n  - [fitCameraToModel](#fitcameratomodel)\n  - [worldToScreen](#worldtoscreen)\n  - [getIntersectionFromPixel](#getintersectionfrompixel)\n  - [getScreenshot](#getscreenshot)\n- [Intersection](#intersection)\n- [Cognite3DModel](#cognite3dmodel)\n  - [getSubtreeNodeIds](#getsubtreenodeids)\n  - [getBoundingBox](#getboundingbox)\n  - [iterateNodes](#iterateNodes)\n  - [iterateSubtree](#iterateSubtree)\n  - [getNodeColor](#getnodecolor)\n  - [setNodeColor](#setnodecolor)\n  - [resetNodeColor](#resetnodecolor)\n  - [selectNode](#selectnode)\n  - [deselectNode](#deselectnode)\n  - [deselectAllNodes](#deselectallnodes)\n  - [showNode](#shownode)\n  - [showAllNodes](#showallnodes)\n  - [hideAllNodes](#hideallnodes)\n  - [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n  - `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n  - `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n  - `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n  - `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n  sdk: <Instance of CogniteClient>\n});\n```\n\n#### dispose\n\n- **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n- **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n- **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n  - `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n  - `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box.\n  - `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n  - `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox },\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>**\n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n- `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n- `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n- `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\n- **See: [getBoundingBox](#getboundingbox)**\n  Move camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n- `box` **THREE.Box3** \\-- The bounding box in world space\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n- `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n- **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n- **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n- **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n- `point` **THREE.Vector3** \\-- World space coordinate.\n- `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n- `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n- `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n- `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection)\n  // it was a hit\n  console.log(\n    'You hit model ',\n    intersection.model,\n    ' at the node with id ',\n    intersection.nodeId,\n    ' at this exact point ',\n    intersection.point\n  );\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n- `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n- `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n- `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n- `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3**\n\n#### iterateNodes\n\nGo through the node tree and apply an action to each node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await model.iterateNodes(console.log);\n```\n\n##### Parameters\n\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n\nReturns **void**\n\n#### iterateSubtree\n\nGo through the subtree a node of the tree and apply an action to each subtree node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await viewer.iterateSubtree(1111111111, console.log);\n```\n\n##### Parameters\n\n- `nodeId` **number** \\-- The id of the node whose subtree will have action applied to\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n- `treeIndex?` **number** \\-- (Optional) The index within the tree for the given nodeId\n- `subtreeSiuze?` **number** \\-- (Optional) The size of the subtree starting from nodeId\n\nReturns **Promise&lt;boolean>** Whether a valid nodeId was given or not\n\n#### getNodeColor\n\n- **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n- **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n- `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n- `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n- **See: [deselectNode](#deselectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n- **See: [selectNode](#selectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"4a0be67ccd0fec5ff1b9a47e630f9f219c5fa29b","scripts":{"lint":"./scripts/lint.sh","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run moveTypes","clean":"rm -rf dist","serve":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","lint:fix":"./scripts/lint.sh --fix","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"npm lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && npm && npm run serve"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"10.16.1","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"right-now":"^1.0.0","is-function":"^1.0.1","query-string":"^6.8.3","@babel/runtime":"^7.7.2","mixpanel-browser":"^2.30.1","@tweenjs/tween.js":"^18.4.2","simple-statistics":"^7.0.5","mouse-event-offset":"^3.0.2","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"idb":"^4.0.5","husky":"^3.0.9","mocha":"^6.2.2","three":"^0.110.0","eslint":"^6.6.0","tslint":"^5.20.1","webpack":"^4.41.2","es-check":"^5.0.0","prettier":"^1.18.2","stats-js":"^1.0.1","testcafe":"^1.6.1","ts-loader":"^6.2.1","pixelmatch":"^5.1.0","protobufjs":"^6.8.8","typescript":"^3.7.2","@babel/core":"^7.7.2","webpack-cli":"^3.3.10","@cognite/sdk":"^2.10.0","babel-eslint":"^10.0.3","babel-loader":"^8.0.6","webpack-merge":"^4.2.2","worker-loader":"^2.0.0","@babel/polyfill":"^7.7.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.7.1","source-map-loader":"^0.2.4","eslint-plugin-jest":"^23.0.3","webpack-dev-server":"^3.9.0","copy-webpack-plugin":"^5.0.5","eslint-plugin-react":"^7.16.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.8.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^18.0.1","eslint-plugin-import":"^2.18.2","@cognite/3d-web-parser":"file:../../3d-web-parser/dragly/fix-torus-normal/cognite-3d-web-parser-v0.12.4.tgz","@cognite/eslint-config":"^1.4.2","eslint-config-prettier":"^6.5.0","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.86","eslint-plugin-react-hooks":"^2.2.0","fork-ts-checker-webpack-plugin":"^3.1.0","@babel/plugin-transform-runtime":"^7.6.2","@cognite/tslint-config-cognite-3d":"^1.0.4","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"three":"^0.110.0","@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.2-torus-normal-fix_1573730715631_0.19754867858627523","host":"s3://npm-registry-packages"}},"6.1.2-torus-normal-fix-2":{"name":"@cognite/3d-viewer","version":"6.1.2-torus-normal-fix-2","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.2-torus-normal-fix-2","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"austin-cognite","email":"austin.moninger@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"bellamoo","email":"william.andrews@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"erikgrinaker","email":"erik@grinaker.org"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joshua.allum","email":"joshua.allum@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"kylling","email":"jonas.kylling@cognite.com"},{"name":"larsmoa","email":"lars.moastuen@cognite.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"melike.ercan","email":"melike.ercan@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nalaka","email":"nalakajayasena@gmail.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"sebbert-cognite","email":"sebastian.reinhard@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"trygve.utstumo","email":"trygve.utstumo@cognite.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"e863c5fca488af013954604da82b78c896706bb9","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.2-torus-normal-fix-2.tgz","fileCount":5,"integrity":"sha512-4oBPvarJcEDWWYgubkWLSqv3M3lJ3WfLzimezg4aN38+On4ngieV1UwK5bt+tKnEHqSI2ar2dKle69IrGXCD6Q==","signatures":[{"sig":"MEYCIQCPZSsOLgQZrIFae60enXrEl35Iuhr722W8NhUBnOEqLgIhAIn6xMzdOT8rww1zCAMHk7gu+DehfAhQGAwAUbJ9LQKP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":224013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzm+kCRA9TVsSAnZWagAAnV4P/1WhJ+2q/mkhU9/reehS\nhPIMLrfAzPGouLZa+vpIAXg31Z/sFRZI37bx94A2MIyPUKpYsIKiuwAoosBC\nugWwTYTjpgOTk/N+PEiBy2mv9mLJkARfUHLngY+5Vhl9yznhU5Ht62pi9l7X\nC8GH+U4h7ASnKpZGOxROzoIuhdHhv6J4qkbe4vdtV2kAwdUnNJYO3gx36jii\nqlgA6upep3ek1yYCadXs8dHyE95jmCo992HoRr5jUFU61QzIcIyIiUk78Hfq\nw4ZAdrCwBcOapm/UNzMRtwNGhITnIFSnibFWevL+jCEU2FEdQ9HnlXKlRhOp\n3aV76iMt2YZL09w+S1vu3zgPO7+1xcA8GLTnK40fuWbpbb9rTK8pFZEDxfL3\nQRO4l/3tJijfwJXM7Qbxeu/wq7oqloRG2FwhFi2QoK6byQHLKahSR5g6e5IW\nTcjJyRtXcE8aKLiIJNrIeKQpTh5lxNdHDwNz17qKGlwIVZDjyQwJXsDVT5+f\nUvB2WKb5ROpyNMlA1xlokMtscxtByiqC+u6C3ghgXreyZjI5lKPFyS7pZiuA\nkRpsNzq7BVyqIPNMye1JDPTOLANSgy2PT1AiDdcG/9Ra/MQbsRXI771hvMMA\nMUsmiZBKlDm9AQJv0ztCELl8wIe8g7nFy/XdHJhLkj6xucmbg+jo85DCWntw\nV01c\r\n=fLLa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","husky":{"hooks":{"pre-push":"npm run lint"}},"types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n\n## Table of Contents\n\n- [Install](#install)\n- [Cognite Data Fusion](#cognite-data-fusion)\n- [Usage](#usage)\n  - [Sample code](#sample-code)\n    - [Add progress listeners](#add-progress-listeners)\n    - [Make the model clickable](#make-the-model-clickable)\n- [API Reference](#api-reference)\n- [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n//  If you are loading a local file, then just pass it in the localPath when you addModel:\nconst viewer = new Cognite3DViewer();\n// If you are loading more than just local file, you would need to specify a sdk:\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) })\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n- [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\nAdding model from CDF\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) });\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId, // 3D model id\n  revisionId, // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nAdding local model\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  localPath: '...',\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n>  {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n- **See: [getBoundingBox](#getboundingbox)**\n- **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n- **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\nconst { target, position } = revision.camera;\nif (Array.isArray(target) && Array.isArray(position)) {\n  // Create three.js objects\n  const positionVector = new THREE.Vector3(...position);\n  const targetVector = new THREE.Vector3(...target);\n  // Apply transformation matrix\n  positionVector.applyMatrix4(model.matrix);\n  targetVector.applyMatrix4(model.matrix);\n  // Set on viewer\n  viewer.setCameraPosition(positionVector);\n  viewer.setCameraTarget(targetVector);\n} else {\n  viewer.fitCameraToModel(model, 0);\n}\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n- [Cognite3DViewer](#cognite3dviewer)\n  - [Parameters](#parameters)\n  - [Examples](#examples)\n  - [dispose](#dispose)\n  - [domElement](#domelement)\n  - [isBrowserSupported](#isbrowsersupported)\n  - [on](#on)\n  - [off](#off)\n  - [addModel](#addmodel)\n  - [addObject3D](#addobject3d)\n  - [removeObject3D](#removeobject3d)\n  - [setSlicingPlanes](#setslicingplanes)\n  - [getCameraPosition](#getcameraposition)\n  - [getCameraTarget](#getcameratarget)\n  - [setCameraPosition](#setcameraposition)\n  - [setCameraTarget](#setcameratarget)\n  - [fitCameraToBoundingBox](#fitcameratoboundingbox)\n  - [disableKeyboardNavigation](#disablekeyboardnavigation)\n  - [enableKeyboardNavigation](#enablekeyboardnavigation)\n  - [fitCameraToModel](#fitcameratomodel)\n  - [worldToScreen](#worldtoscreen)\n  - [getIntersectionFromPixel](#getintersectionfrompixel)\n  - [getScreenshot](#getscreenshot)\n- [Intersection](#intersection)\n- [Cognite3DModel](#cognite3dmodel)\n  - [getSubtreeNodeIds](#getsubtreenodeids)\n  - [getBoundingBox](#getboundingbox)\n  - [iterateNodes](#iterateNodes)\n  - [iterateSubtree](#iterateSubtree)\n  - [getNodeColor](#getnodecolor)\n  - [setNodeColor](#setnodecolor)\n  - [resetNodeColor](#resetnodecolor)\n  - [selectNode](#selectnode)\n  - [deselectNode](#deselectnode)\n  - [deselectAllNodes](#deselectallnodes)\n  - [showNode](#shownode)\n  - [showAllNodes](#showallnodes)\n  - [hideAllNodes](#hideallnodes)\n  - [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n  - `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n  - `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n  - `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n  - `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n  sdk: <Instance of CogniteClient>\n});\n```\n\n#### dispose\n\n- **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n- **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n- **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n  - `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n  - `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box.\n  - `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n  - `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox },\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>**\n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n- `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n- `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n- `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\n- **See: [getBoundingBox](#getboundingbox)**\n  Move camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n- `box` **THREE.Box3** \\-- The bounding box in world space\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n- `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n- **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n- **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n- **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n- `point` **THREE.Vector3** \\-- World space coordinate.\n- `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n- `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n- `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n- `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection)\n  // it was a hit\n  console.log(\n    'You hit model ',\n    intersection.model,\n    ' at the node with id ',\n    intersection.nodeId,\n    ' at this exact point ',\n    intersection.point\n  );\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n- `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n- `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n- `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n- `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3**\n\n#### iterateNodes\n\nGo through the node tree and apply an action to each node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await model.iterateNodes(console.log);\n```\n\n##### Parameters\n\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n\nReturns **void**\n\n#### iterateSubtree\n\nGo through the subtree a node of the tree and apply an action to each subtree node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await viewer.iterateSubtree(1111111111, console.log);\n```\n\n##### Parameters\n\n- `nodeId` **number** \\-- The id of the node whose subtree will have action applied to\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n- `treeIndex?` **number** \\-- (Optional) The index within the tree for the given nodeId\n- `subtreeSiuze?` **number** \\-- (Optional) The size of the subtree starting from nodeId\n\nReturns **Promise&lt;boolean>** Whether a valid nodeId was given or not\n\n#### getNodeColor\n\n- **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n- **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n- `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n- `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n- **See: [deselectNode](#deselectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n- **See: [selectNode](#selectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"4a0be67ccd0fec5ff1b9a47e630f9f219c5fa29b","scripts":{"lint":"./scripts/lint.sh","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","serve":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","lint:fix":"./scripts/lint.sh --fix","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"npm lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && npm && npm run serve"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"10.16.1","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"right-now":"^1.0.0","is-function":"^1.0.1","query-string":"^6.8.3","@babel/runtime":"^7.7.2","mixpanel-browser":"^2.30.1","@tweenjs/tween.js":"^18.4.2","simple-statistics":"^7.0.5","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"0.13.4-torus-normal-fix","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"idb":"^4.0.5","husky":"^3.0.9","mocha":"^6.2.2","three":"^0.110.0","eslint":"^6.6.0","tslint":"^5.20.1","webpack":"^4.41.2","es-check":"^5.0.0","prettier":"^1.18.2","stats-js":"^1.0.1","testcafe":"^1.6.1","ts-loader":"^6.2.1","pixelmatch":"^5.1.0","typescript":"^3.7.2","@babel/core":"^7.7.2","webpack-cli":"^3.3.10","@cognite/sdk":"^2.10.0","babel-eslint":"^10.0.3","babel-loader":"^8.0.6","webpack-merge":"^4.2.2","worker-loader":"^2.0.0","@babel/polyfill":"^7.7.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.7.1","source-map-loader":"^0.2.4","eslint-plugin-jest":"^23.0.3","webpack-dev-server":"^3.9.0","copy-webpack-plugin":"^5.0.5","eslint-plugin-react":"^7.16.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.8.0","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^18.0.1","eslint-plugin-import":"^2.18.2","@cognite/eslint-config":"^1.4.2","eslint-config-prettier":"^6.5.0","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-prettier":"^3.1.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.86","eslint-plugin-react-hooks":"^2.2.0","fork-ts-checker-webpack-plugin":"^3.1.0","@babel/plugin-transform-runtime":"^7.6.2","@cognite/tslint-config-cognite-3d":"^1.0.4","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"three":"^0.110.0","@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.2-torus-normal-fix-2_1573810083574_0.1706163956634663","host":"s3://npm-registry-packages"}},"6.1.3":{"name":"@cognite/3d-viewer","version":"6.1.3","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.3","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"austin-cognite","email":"austin.moninger@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"bellamoo","email":"william.andrews@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"erikgrinaker","email":"erik@grinaker.org"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joshua.allum","email":"joshua.allum@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"kylling","email":"jonas.kylling@cognite.com"},{"name":"larsmoa","email":"lars.moastuen@cognite.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"melike.ercan","email":"melike.ercan@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nalaka","email":"nalakajayasena@gmail.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"sebbert-cognite","email":"sebastian.reinhard@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"trygve.utstumo","email":"trygve.utstumo@cognite.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"cc3d2d362f5bbf3d701b85093fbf583eb8656f0e","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.3.tgz","fileCount":5,"integrity":"sha512-ZZsjUKvY09yjkocWjxGSPQGjtmV82t829oAGLfTTgjmgSzi+pOvC8//ujwdR+tnhgD40F1CU/zj7ZbNv90gl/A==","signatures":[{"sig":"MEQCICC6UWYfh49aNaF2m8j3ZMIogHZvhwqIH6GRJG69gsajAiASQbpkiRY94gQZMTm/B8HF3bLqHtp8Vrewl+2E6D9hVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":223126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1UeRCRA9TVsSAnZWagAARr4QAJGujEKn2E9n2odnXzDh\nPU2MJPsbi54RD0Q5cWdbjFGI+cZIZjY24i2JjF7zZREdqEZAoS9l+Fh4x6g4\nRiCGWs5QmcfxEIRFMHoR1A1ConIy0cC3VQ4ImeAtBRkrnWVQWLZe0d0pvmuk\ntJP9u4/oAoF1I5okhH3ZDRTgcwwBbKJ+ELU2uZMiSJNTjEUhXSer1f4r64Vr\n7j8NNvChTh8VdyqbW/vI2ZBto0D2xEhz424nDG7xsZbtlMOT6iDZybnRFS8M\nC8ixUb/sZyIywpIhf1VTSqkFenpbFPb3R6Zt53zycsFiGpp+tJ8wXjM6rSKB\n1fC6DEkL261EhVj1NRaM7/bSC3ZzG9zhff5OsRNmxoe4drLVYhDryAdujDMu\npADa2fXcJ3JmK4peAiF0BLp8T7PnxAFPMgtl6ENi9LZ92fIlmF4otOrZXa/2\n/W180n8NcZ8JluTC1YFRWdN3WNhZPScwAls8izyr1hMhDOBvYCnrc8G9tjeY\nR50+zppuogCjGnw/aEf//tAoUlxwWPgAbNeZ9OeiGg3PQl8uVTf3qh4ANWwt\nGNQ46Nt8tRxQE+p2YV5DSQX5MNSRE6WKhvrRC7nnOweR8QfRdLCkWbSR5Aj4\niG8Cxgyyktun/acObp/DewT4Ti5RRQX9Z7nD7jaa+4NIoBVgUr8HQFEzaicY\nSouS\r\n=0J9B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"f6b673d3441953c172efae7189d15bed6820cd71","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"larsmoa","email":"lars.moastuen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"10.16.3","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.13.5","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"devDependencies":{"idb":"^4.0.3","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^5.0.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.18.2","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.3_1574258577017_0.20037912352133813","host":"s3://npm-registry-packages"}},"6.1.3-fix-undefined-tree-index":{"name":"@cognite/3d-viewer","version":"6.1.3-fix-undefined-tree-index","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.3-fix-undefined-tree-index","maintainers":[{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"austin-cognite","email":"austin.moninger@cognite.com"},{"name":"baharshahriari","email":"bahar.shahriari@cognite.com"},{"name":"bellamoo","email":"william.andrews@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dragly","email":"s@dragly.com"},{"name":"erikgrinaker","email":"erik@grinaker.org"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"indre-cognite","email":"indre.grigaraviciute@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"joshua.allum","email":"joshua.allum@cognite.com"},{"name":"kathrine-cognite","email":"kathrine.muszynski@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"kylling","email":"jonas.kylling@cognite.com"},{"name":"larsmoa","email":"lars.moastuen@cognite.com"},{"name":"matej.snuderl","email":"matej.snuderl@cognite.com"},{"name":"melike.ercan","email":"melike.ercan@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"nalaka","email":"nalakajayasena@gmail.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"rj126","email":"riyajagetia@gmail.com"},{"name":"sebbert-cognite","email":"sebastian.reinhard@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"trygve.utstumo","email":"trygve.utstumo@cognite.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"69508455d2db0eaf95d590ac5b98907a5d3eb110","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.3-fix-undefined-tree-index.tgz","fileCount":5,"integrity":"sha512-2qGUdu/noSh5vfsxn5Le3tfCL2wpP22VUzfBFCuOJw4+4ro06PEtXad0r/9zqgYEl1jBOU893beM9xljig+SVA==","signatures":[{"sig":"MEQCIB6QP0xktCJIzegwsNVVXwe3HjbFoEFQKrBxn4RX+5tIAiAGW4/m7VIeC6LiUoAcx12kpIA+1bK9JUBt7vw6Bzbupg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":223225,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3PERCRA9TVsSAnZWagAAd18QAIvQk2YwXWg5lFzapsQk\n0hiXs7wCcmM+xuL7uUUpWROmudAJ3+O40I+5FGZc6AeD7z64wHBIGek+e5B7\nlwiNMHPnWIBmFFh1yaYIX0/njJnfLuwn94jdn8JBcWkjSDu0vSFdmwM11HQe\n/X1qb8btUgYUxOOauhakXs0H1G1NF/K6LjJTva7GnCvBW7RXW8wkPWUEdY3S\nh13F6fbetZzWjvvjC0n73qmCoD9dtiw3uBuCz0/fv7DC6suFSdRKI52RRHHR\nwxAXOMmMtv959Azh4MXKAv5uA0gNnIISfDkBIg/xvxG/pRhcUyoQrf9eK0t6\njz5/v7/Izh7wK5aDQkOnPY4u1fgD6Kg3khK6RWMwRYeS6d88YN7d/+fR58uT\nQkKEAZJK0wS5mScCSaKx5vYGRG0OLRiBzx/Egcwz5bjfw+blKa03ugUwbxA8\ni7GRSIBYdP+EjiSYDeTPMBaPz8ndToSJk2LAcp8jPzA0lWWrvcwlTBBmBWw9\n5civTsDb7guiK2Kl0U1wRvAqbWpycdMMjfj8TUuhvdaxpWrwTCtu08zS5Blu\nH79TvZmaQuVnDKLTDaSiWGELIxuCIMtVrWC0gNr98c3qGL2a/6Kn4oj0sX5V\nD4VCyV9pStgC4SKa0exXPl3nHWUyRvIcCgQxY6SExn3UHKE2t3/ck+MS1Kfw\nrrau\r\n=LcRy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n\n## Table of Contents\n\n- [Install](#install)\n- [Cognite Data Fusion](#cognite-data-fusion)\n- [Usage](#usage)\n  - [Sample code](#sample-code)\n    - [Add progress listeners](#add-progress-listeners)\n    - [Make the model clickable](#make-the-model-clickable)\n- [API Reference](#api-reference)\n- [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n//  If you are loading a local file, then just pass it in the localPath when you addModel:\nconst viewer = new Cognite3DViewer();\n// If you are loading more than just local file, you would need to specify a sdk:\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) })\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n- [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\nAdding model from CDF\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) });\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId, // 3D model id\n  revisionId, // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nAdding local model\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  localPath: '...',\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n>  {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n- **See: [getBoundingBox](#getboundingbox)**\n- **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n- **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\nconst { target, position } = revision.camera;\nif (Array.isArray(target) && Array.isArray(position)) {\n  // Create three.js objects\n  const positionVector = new THREE.Vector3(...position);\n  const targetVector = new THREE.Vector3(...target);\n  // Apply transformation matrix\n  positionVector.applyMatrix4(model.matrix);\n  targetVector.applyMatrix4(model.matrix);\n  // Set on viewer\n  viewer.setCameraPosition(positionVector);\n  viewer.setCameraTarget(targetVector);\n} else {\n  viewer.fitCameraToModel(model, 0);\n}\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n- [Cognite3DViewer](#cognite3dviewer)\n  - [Parameters](#parameters)\n  - [Examples](#examples)\n  - [dispose](#dispose)\n  - [domElement](#domelement)\n  - [isBrowserSupported](#isbrowsersupported)\n  - [on](#on)\n  - [off](#off)\n  - [addModel](#addmodel)\n  - [addObject3D](#addobject3d)\n  - [removeObject3D](#removeobject3d)\n  - [setSlicingPlanes](#setslicingplanes)\n  - [getCameraPosition](#getcameraposition)\n  - [getCameraTarget](#getcameratarget)\n  - [setCameraPosition](#setcameraposition)\n  - [setCameraTarget](#setcameratarget)\n  - [fitCameraToBoundingBox](#fitcameratoboundingbox)\n  - [disableKeyboardNavigation](#disablekeyboardnavigation)\n  - [enableKeyboardNavigation](#enablekeyboardnavigation)\n  - [fitCameraToModel](#fitcameratomodel)\n  - [worldToScreen](#worldtoscreen)\n  - [getIntersectionFromPixel](#getintersectionfrompixel)\n  - [getScreenshot](#getscreenshot)\n- [Intersection](#intersection)\n- [Cognite3DModel](#cognite3dmodel)\n  - [getSubtreeNodeIds](#getsubtreenodeids)\n  - [getBoundingBox](#getboundingbox)\n  - [iterateNodes](#iterateNodes)\n  - [iterateSubtree](#iterateSubtree)\n  - [getNodeColor](#getnodecolor)\n  - [setNodeColor](#setnodecolor)\n  - [resetNodeColor](#resetnodecolor)\n  - [selectNode](#selectnode)\n  - [deselectNode](#deselectnode)\n  - [deselectAllNodes](#deselectallnodes)\n  - [showNode](#shownode)\n  - [showAllNodes](#showallnodes)\n  - [hideAllNodes](#hideallnodes)\n  - [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n  - `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n  - `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n  - `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n  - `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n  sdk: <Instance of CogniteClient>\n});\n```\n\n#### dispose\n\n- **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n- **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n- **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n  - `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n  - `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box.\n  - `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n  - `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox },\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>**\n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n- `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n- `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n- `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\n- **See: [getBoundingBox](#getboundingbox)**\n  Move camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n- `box` **THREE.Box3** \\-- The bounding box in world space\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n- `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n- **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n- **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n- **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n- `point` **THREE.Vector3** \\-- World space coordinate.\n- `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n- `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n- `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n- `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection)\n  // it was a hit\n  console.log(\n    'You hit model ',\n    intersection.model,\n    ' at the node with id ',\n    intersection.nodeId,\n    ' at this exact point ',\n    intersection.point\n  );\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n- `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n- `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n- `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n- `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3**\n\n#### iterateNodes\n\nGo through the node tree and apply an action to each node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await model.iterateNodes(console.log);\n```\n\n##### Parameters\n\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n\nReturns **void**\n\n#### iterateSubtree\n\nGo through the subtree a node of the tree and apply an action to each subtree node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await viewer.iterateSubtree(1111111111, console.log);\n```\n\n##### Parameters\n\n- `nodeId` **number** \\-- The id of the node whose subtree will have action applied to\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n- `treeIndex?` **number** \\-- (Optional) The index within the tree for the given nodeId\n- `subtreeSiuze?` **number** \\-- (Optional) The size of the subtree starting from nodeId\n\nReturns **Promise&lt;boolean>** Whether a valid nodeId was given or not\n\n#### getNodeColor\n\n- **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n- **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n- `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n- `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n- **See: [deselectNode](#deselectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n- **See: [selectNode](#selectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support@cognite.com>\n","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"dragly","email":"s@dragly.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.9.0","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"10.16.1","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"0.13.5-fix-undefined-tree-index","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"idb":"^4.0.3","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^5.0.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.18.2","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.3-fix-undefined-tree-index_1574760721074_0.03243475494972836","host":"s3://npm-registry-packages"}},"6.1.4":{"name":"@cognite/3d-viewer","version":"6.1.4","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.4","maintainers":[{"name":"agadacz-cognite","email":"anna.gadacz@cognite.com"},{"name":"amem","email":"amem.vck@gmail.com"},{"name":"ana-gheorghe","email":"ana.gheorghe@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"annaher","email":"anna.hermansen@cognite.com"},{"name":"anttran","email":"an.tran.cs@gmail.com"},{"name":"arnekv","email":"arne.kvadsheim@cognite.com"},{"name":"arvearve","email":"mail@arve.in"},{"name":"ashunam","email":"manusha1980@gmail.com"},{"name":"aslettemark-cognite","email":"aksel.slettemark@cognite.com"},{"name":"aurorascharff","email":"aurora.scharff@cognite.com"},{"name":"bellamoo","email":"william.andrews@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"charlottesoderstrom","email":"charlotte.soderstrom@cognite.com"},{"name":"christjt","email":"christopher.tannum@cognite.com"},{"name":"cognite-indre","email":"indre.grigaraviciute@cognite.com"},{"name":"cognite-joa","email":"joakim.valand@cognite.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"cogniteterraform","email":"cicd+terraform@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"dsaks999","email":"delon.saks@cognite.com"},{"name":"erland-cognite","email":"erland.solstrand@cognite.com"},{"name":"evan.charlton","email":"evan.charlton@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@cognite.com"},{"name":"frikkfossan","email":"frikk.fossan@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"hakontro","email":"hakon.tromborg@cognite.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"hasithanjo2","email":"hasithajayasundara1@gmail.com"},{"name":"hhenriques","email":"henrique.henriques@cognite.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"j-bjorne","email":"joachim.bjorne@cognite.com"},{"name":"jarlah","email":"jarl.andre@gmail.com"},{"name":"johan-cognite","email":"johan.hatleskog@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"jtcog","email":"janne.trollebo@cognite.com"},{"name":"jucc","email":"jucorrea.mail@gmail.com"},{"name":"kathrine-cognite","email":"kathrine.muszynski@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"kimjoar","email":"kjbekkelund@gmail.com"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"kristogj","email":"kristoffer.gjerde@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"kylling","email":"jonas.kylling@cognite.com"},{"name":"larsmoa","email":"lars.moastuen@cognite.com"},{"name":"magjerds","email":"maiken.gjerdseth@cognite.com"},{"name":"magnusmoan","email":"magnus.moan@cognite.com"},{"name":"maksim.nesterenko","email":"maksim.nesterenko@cognite.com"},{"name":"mathialo","email":"mathias.lohne@cognite.com"},{"name":"matthew.cameron","email":"matthew.cameron@cognite.com"},{"name":"matzhaugen","email":"matz.haugen@cognite.com"},{"name":"maximcognite","email":"maxim.yatsenko@cognite.com"},{"name":"me-ydv-5","email":"sahil.yadav@cognite.com"},{"name":"melike.ercan","email":"melike.ercan@cognite.com"},{"name":"mihilr","email":"mihilranathunga@gmail.com"},{"name":"miladcognite","email":"milad.mobarhan@cognite.com"},{"name":"min.shi","email":"min.shi@cognite.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"mrtraser","email":"mr.traser@gmail.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"mvergard","email":"marius.overgard@gmail.com"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"nicklassvendsrud","email":"nicklas.svendsrud@gmail.com"},{"name":"nildo","email":"nildo.junior@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"oksana_korniienko","email":"oksana.korniienko@cognite.com"},{"name":"paulo-menezes-cognite","email":"paulo.menezes@cognite.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"pbettler","email":"philippe.bettler@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"qtiptip","email":"ivar.stangeby@cognite.com"},{"name":"raikoss","email":"danielstoa@outlook.com"},{"name":"rekarnar","email":"rekarnar@gmail.com"},{"name":"roman010","email":"valeriu.buzila@cognite.com"},{"name":"rumeshwick","email":"rumesh.wickramasinghe@gmail.com"},{"name":"sceniclife","email":"viet.le@cognite.com"},{"name":"scottmelhop","email":"scott.melhop@cognite.com"},{"name":"sebbert-cognite","email":"sebastian.reinhard@cognite.com"},{"name":"siljec","email":"silje.christensen@cognite.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"sindresh92","email":"sindre.hammerlund@cognite.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"sondregs-cognite","email":"sondre.skjastad@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"tfheen-cognite","email":"tollef.fog.heen@cognite.com"},{"name":"tim-othy","email":"timothy.mehay@cognite.com"},{"name":"tjedor","email":"theodor.wiik@cognite.com"},{"name":"trygve.utstumo","email":"trygve.utstumo@cognite.com"},{"name":"valeriia-prokopenko","email":"valeriia.prokopenko@gmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"vegardokland","email":"vegard@okland.org"},{"name":"vibhanshubhardwaj","email":"bhardwajvibhanshu@gmail.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"19f9fe04d1d82343613d75a7195c492f23c667c6","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.4.tgz","fileCount":5,"integrity":"sha512-2qH4aC7NbxYE+m3st8+c+S69bBzYR/p/ju0WBvIOhZgHX60A2oiwJIUPIrRciWR80d8N73JPhn43ZfVPu4ciaA==","signatures":[{"sig":"MEUCIHmfq+g+RHiR2zZgTwPOZmx8XtD6Y6zOg0Xx8ThfXevvAiEApXxX5KvwNiCdn4GoH6gix1n5oTfVccZkHhFk4nkzL4M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":230384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/v15CRA9TVsSAnZWagAA0scQAIa8WWbeNm2Lj8Su0R5h\nKhnkoJimoljDMT1asAycIXBmN+sxaTLdy0RjqS/aUKvwmfwwSvEa4Z76mnlo\ntTPIQlQudQx+h92UVoqVmabNukRqwxfzWmQMi9lBKvacnxxfsGAIKoKir88v\n/8xgGZvNsFpdC53gFjKxTgKT5gQOBYiyx2IbkOgKaU05/4r4pgIpwALOhW1W\noS74mwcYtCZZmZT3l/ABv1honClDW6pJQtAF84uvxb8rf2BnidDagg6i/KmI\nEZiek1uh+02HfSWJqy4qVgCQyNQKVs2e7UPfrKGa43Nq6z6DlbwNe7YVA+N/\nDkie7kzsrQXT1Xmc3enqvWYDeu9cXcJS4LpJunmyMRnFfXfymQcC2O8RZy91\nO2DYHmZ9ZnqexGRTDAbCrleFP2aEJ5dyFhr6l/DCtBRPlUOanYVqRWbtz4zL\nqZzud0D6hgI132E+/lUrggqCqQkaWK2530r1bHKGXzy3nTilf/VSzfP+/KDx\n5pm5RPfslJq3H6BeFLvhg8+QIFPv9yNmN5+zzC7+KeeeaicGh2Ol058zyZKp\nIyqxFG50BAmEZLnwEREypqt2UMBkJPUTVYeXzXgzVn5vn+bc/UGuNSfngme7\nUJjENaGCvnKxwPQfOkfLCxPydvnrbs+Zndg3lNUVHMPcHae3YtKBGz+Zgmh4\nvS17\r\n=NuzZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"b546696dee2dddfc051186721615a3c5cf766e8c","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","moveTypes":"cp ./src/index.d.ts ./dist/","autodeploy":"cognite-release-manager autodeploy --repo=3d-viewer","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"larsmoa","email":"lars.moastuen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.14.4","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"10.21.0","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.13.5","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"devDependencies":{"idb":"^4.0.3","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^5.0.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.18.2","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","@cognite/release-manager":"^0.1.78","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.4_1593769336362_0.8172506543565301","host":"s3://npm-registry-packages"}},"6.1.5":{"name":"@cognite/3d-viewer","version":"6.1.5","keywords":["cognite","3d","viewer"],"license":"UNLICENSED","_id":"@cognite/3d-viewer@6.1.5","maintainers":[{"name":"sumitpandey","email":"i.sumitpandey@gmail.com"},{"name":"francisco.rull","email":"francisco.rull@cognite.com"},{"name":"rhuan.barreto","email":"rhuan.barreto@gmail.com"},{"name":"neringaalt","email":"neringa.altanaite@cognite.com"},{"name":"dordev","email":"dorde.veljkovic@cognite.com"},{"name":"alexnix","email":"alex2august@gmail.com"},{"name":"drsp-cognite","email":"dylan.phelps@cognite.com"},{"name":"alitahir11","email":"ali.tahir@cognitedata.com"},{"name":"oiuytrdsxcvbnjkhgfcvbnm","email":"nicholas.gerstle@cognite.com"},{"name":"wjoel","email":"joel.wilsson@gmail.com"},{"name":"tapped","email":"emilalexer@hotmail.com"},{"name":"mortencognite","email":"morten.hillbom@cognite.com"},{"name":"frxstrem","email":"frx.apps@gmail.com"},{"name":"cognitecicd","email":"cicd@cognite.com"},{"name":"msroed","email":"msroed@gmail.com"},{"name":"pavelzubarev","email":"pavel.zubarev@cognite.com"},{"name":"msusag","email":"michael.susag@cognite.com"},{"name":"katyhouse","email":"ekaterina.bidyanova@yandex.ru"},{"name":"nfremming","email":"nils.fremming@cognite.com"},{"name":"ktjolsen","email":"ktjolsen@gmail.com"},{"name":"kiriencognite","email":"kirien.eyma@cognite.com"},{"name":"mperzyna","email":"mariusz.perzyna@cognite.com"},{"name":"steinhdan","email":"shd@cameon.net"},{"name":"dmivankov","email":"dmitry.ivankov@cognite.com"},{"name":"polomani","email":"ivano.polomani@gmail.com"},{"name":"simen.eriksen","email":"simen.eriksen@cognite.com"},{"name":"joma_cognite","email":"jonas.mack@cognite.com"},{"name":"nildo","email":"nildo.jnr@gmail.com"},{"name":"sjinyuan","email":"sharon.sun@cognite.com"},{"name":"nils-cognite","email":"nils.barlaug@cognite.com"},{"name":"dlcognite","email":"david.liu@cognite.com"},{"name":"haak","email":"haakon.mork@cognite.com"},{"name":"carlospereira","email":"carlos.l.pereira@gmail.com"},{"name":"issaafkattan","email":"Issaaf.kattan@cognite.com"},{"name":"larsmoa","email":"lars.moastuen@cognite.com"},{"name":"nishafern","email":"nisha.fernando@cognite.com"},{"name":"trygve.utstumo","email":"trygve.utstumo@cognite.com"},{"name":"bellamoo","email":"william.andrews@cognite.com"},{"name":"kylling","email":"jonas.kylling@cognite.com"},{"name":"kathrine-cognite","email":"kathrine.muszynski@cognite.com"},{"name":"roman010","email":"valeriu.buzila@cognite.com"},{"name":"kimjoar","email":"kjbekkelund@gmail.com"},{"name":"rekarnar","email":"rekarnar@gmail.com"},{"name":"maximcognite","email":"maxim.yatsenko@cognite.com"},{"name":"rumeshwick","email":"rumesh.wickramasinghe@gmail.com"},{"name":"tim-othy","email":"timothy.mehay@cognite.com"},{"name":"vegardokland","email":"vegard@okland.org"},{"name":"hhenriques","email":"henrique.henriques@cognite.com"},{"name":"tfheen-cognite","email":"tollef.fog.heen@cognite.com"},{"name":"oksana_korniienko","email":"oksana.korniienko@cognite.com"},{"name":"j-bjorne","email":"joachim.bjorne@cognite.com"},{"name":"scottmelhop","email":"scott.melhop@cognite.com"},{"name":"magnusmoan","email":"magnus.moan@cognite.com"},{"name":"mathialo","email":"mathias.lohne@cognite.com"},{"name":"agadacz-cognite","email":"anna.gadacz@cognite.com"},{"name":"paulo-menezes-cognite","email":"paulo.menezes@cognite.com"},{"name":"miladcognite","email":"milad.mobarhan@cognite.com"},{"name":"me-ydv-5","email":"sahil.yadav@cognite.com"},{"name":"cogniteterraform","email":"cicd+terraform@cognite.com"},{"name":"anderscognite","email":"anders.hafreager@cognite.com"},{"name":"fredrik955","email":"fredrik.anfinsen@gmail.com"},{"name":"valgussev","email":"valgussev@gmail.com"},{"name":"halvard","email":"halvard.eggen@cognite.com"},{"name":"dan.levings.cognite","email":"dan.levings@cognite.com"},{"name":"sindresh92","email":"sindre.hammerlund@cognite.com"},{"name":"christjt","email":"christopher.tannum@cognite.com"},{"name":"maksim.nesterenko","email":"maksim.nesterenko@cognite.com"},{"name":"hakontro","email":"hakon.tromborg@cognite.com"},{"name":"arnekv","email":"arne.kvadsheim@cognite.com"},{"name":"jucc","email":"jucorrea.mail@gmail.com"},{"name":"ana-gheorghe","email":"ana.gheorghe@cognite.com"},{"name":"matthew.cameron","email":"matthew.cameron@cognite.com"},{"name":"pbettler","email":"philippe.bettler@cognite.com"},{"name":"anttran","email":"an.tran.cs@gmail.com"},{"name":"dsaks999","email":"delon.saks@cognite.com"},{"name":"qtiptip","email":"ivar.stangeby@cognite.com"},{"name":"cognite-joa","email":"joakim.valand@gmail.com"},{"name":"sceniclife","email":"viet.le@cognite.com"},{"name":"johan-cognite","email":"johan.hatleskog@cognite.com"},{"name":"theresatalor-cognite","email":"theresa.talor@cognite.com"},{"name":"mspang","email":"marissa.pang@cognite.com"},{"name":"eliasbjorne","email":"elias.bjorne@cognite.com"},{"name":"oysteinolsen","email":"oystein.olsen@cognite.com"},{"name":"arvearve","email":"mail@arve.in"},{"name":"anders-cog","email":"anders.morken@cognite.com"},{"name":"skairunner","email":"skye.im@nyu.edu"},{"name":"siljec","email":"silje.christensen@cognite.com"},{"name":"nicklassvendsrud","email":"nicklas.svendsrud@gmail.com"},{"name":"jtcog","email":"janne.trollebo@cognite.com"},{"name":"petmotzf","email":"motzfeldt@gmail.com"},{"name":"thorkild","email":"thorkild.stray@cognite.com"},{"name":"deep-cognite","email":"deep.singh@cognite.com"},{"name":"mattmurph9","email":"murphy.matt@live.ca"},{"name":"lprovensi","email":"lucas.provensi@cognite.com"},{"name":"haakonflatval-cognite","email":"hakon.flatval@cognite.com"},{"name":"henne90gen-cognite","email":"hendrik.muller@cognite.com"},{"name":"nicolasagnes","email":"nicolas.agnes@cognite.com"},{"name":"begozcan","email":"begum.ozcan@cognite.com"},{"name":"eiriklv","email":"eirik@evconsult.no"},{"name":"valeriia-prokopenko","email":"valeriia.prokopenko@gmail.com"},{"name":"khalzmax","email":"max.khalzov@gmail.com"},{"name":"chingyu-cognite","email":"ching.yulin@cognite.com"},{"name":"mikaelcognite","email":"mikael.berg@cognite.com"},{"name":"sighol","email":"sighol@gmail.com"},{"name":"lisa.halvorsen.cognite","email":"lisa.halvorsen@cognite.com"},{"name":"heiding","email":"henrik.eiding@cognite.com"},{"name":"ronald-cognite","email":"ronald.baars@cognite.com"},{"name":"senickel","email":"sebastian.nickel@cognite.com"},{"name":"sachila","email":"sachilaranawaka@gmail.com"},{"name":"daniel.priori","email":"daniel.priori@cognite.com"},{"name":"ravinda-cognite","email":"ravinda.senarath@cognite.com"},{"name":"timurgen","email":"timur.samkharadze@gmail.com"},{"name":"trodden-dev","email":"Torgeir.ruden@cognite.com"},{"name":"podeig-cognite","email":"denis.pokotylyuk@cognite.com"},{"name":"aryna.karali","email":"arynakarali@gmail.com"},{"name":"emel.varol","email":"emel.varol@cognite.com"},{"name":"bdimitrijoski","email":"brankodimitrioski@gmail.com"},{"name":"madskjeldsberg","email":"mads.kjeldsberg@cognite.com"},{"name":"yevhenii.maltsev","email":"yevhenii.maltsev@gmail.com"},{"name":"farrukk24","email":"farrukk24@gmail.com"},{"name":"aurlien","email":"kristian.aurlien@cognite.com"},{"name":"bianca-mv","email":"bianca.voinea@cognite.com"},{"name":"samarv","email":"samarvir1996@gmail.com"},{"name":"soleh23","email":"solehjon.ruziboev@cognite.com"},{"name":"malindakpt","email":"malindakpt@gmail.com"},{"name":"mihilr","email":"mihilranathunga@gmail.com"},{"name":"gayandeegala","email":"gayanDeegala@gmail.com"},{"name":"tfarvac","email":"thomas.farvacque@cognite.com"},{"name":"d0ttir","email":"line.hjartarson@cognite.com"},{"name":"borajimin","email":"borajimin@gmail.com"},{"name":"marielha","email":"mari.hatlo@cognite.com"},{"name":"samir-ajdarpasic","email":"samir.ajdarpasic@cognite.com"},{"name":"torbjornopheim","email":"torbjorn.opheim@cognite.com"},{"name":"chanaka25","email":"chanaka.pradeep@conite.com"},{"name":"viralcognite","email":"viral.shah@cognite.com"},{"name":"geircognite","email":"geir.engdahl@cognite.com"},{"name":"soumesh.banerjee","email":"soumeshbanerjee@live.com"},{"name":"mohsin.cognite","email":"mohsin.ammar@cognite.com"},{"name":"asankad.cog","email":"asanka.dissanayake@cognite.com"},{"name":"vebjorngilberg","email":"vebjorn.gilberg@cognite.com"},{"name":"roligheten","email":"christian@roligheten.no"},{"name":"marcushorn","email":"marcus.horn@cognite.com"},{"name":"sara.aalbu","email":"sara.aalbu@cognite.com"},{"name":"atussa","email":"atussa.koushan@cognite.com"},{"name":"aizumi","email":"atsushi.izumi@cognite.com"},{"name":"therockvalley","email":"orjan.steindal@gmail.com"},{"name":"fgcognite","email":"francis.golinski@cognite.com"},{"name":"krzysztof-olbinski","email":"krzysztof.olbinski@toptal.com"},{"name":"gleb.kaistro","email":"gleb.kaistro@cognite.com"},{"name":"lasse.alm","email":"lasse.alm@cognite.com"},{"name":"dmitrijs.rutko.cognite","email":"dmitrijs.rutko@cognite.com"},{"name":"stignite","email":"stian.bakken@cognite.com"},{"name":"perarnet","email":"per.tollefsen@cognite.com"},{"name":"denys-kseniev-cognite","email":"denys.kseniev@cognite.com"},{"name":"bisera","email":"bisera.milosheska@cognite.com"},{"name":"shehan.cognite","email":"shehan.fonseka@cognite.com"},{"name":"udara-cognite","email":"udara.sembukuttiarachchi@cognite.com"},{"name":"raabyeeggs","email":"torstein.haugen@eggsdesign.com"},{"name":"sennen-cognite","email":"sennen.almeida@cognite.com"},{"name":"asankad","email":"asankaudara004@gmail.com"},{"name":"jarlah","email":"jarl.andre@gmail.com"},{"name":"keepfloyding","email":"andris.piebalgs@cognite.com"},{"name":"kbsaid","email":"khalid.said@itverket.no"},{"name":"nayang-cognite","email":"nancy.yang@cognite.com"},{"name":"stevenhgnguyen","email":"steven.nguyen@cognite.com"},{"name":"cgustad","email":"christian.gustad@cognite.com"},{"name":"haved","email":"krogstie.havard@gmail.com"},{"name":"ttmcswg","email":"vlad.semenchuk97@gmail.com"},{"name":"cognitehumlen","email":"niklas.humlen@cognite.com"},{"name":"tommy_thorsen","email":"tommy.thorsen@cognite.com"},{"name":"andersfylling","email":"anders.fylling@cognite.com"},{"name":"meisammalekzadeh","email":"meisammalekzadeh@gmail.com"},{"name":"ericbrattli","email":"eric.brattli@cognite.com"},{"name":"mcarun","email":"arun.arunachalam@cognite.com"},{"name":"saagar-cognite","email":"saagar.takhi@cognite.com"},{"name":"waqasjaved1","email":"waqas.javed@cognite.com"}],"contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"homepage":"https://github.com/cognitedata/3d-viewer#readme","bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"dist":{"shasum":"97603a98ba9d4bb09f7d85c29f0522bbff8a26aa","tarball":"https://registry.npmjs.org/@cognite/3d-viewer/-/3d-viewer-6.1.5.tgz","fileCount":5,"integrity":"sha512-cDq5QLjHREv7noi6TZ8jbO96XZeSWs+FPRNFzoIAe5STgSmGmlOnrZqTzNS7WLqAz4OzYtp0EKvoRm4uO7rpMw==","signatures":[{"sig":"MEYCIQCkLdriK1s+WhPoOuAWPVuy20IDHIGWkBblo73lkdVR6QIhAL6q43FOzl2RbO5dxBezwmOOw8gptIhTaGiQMhGvMCFh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":226105,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJ7eoCRA9TVsSAnZWagAAoBUP/RmGeY5Xb069khiG4fC5\n2CYjdgilIcbva15MCsQah5AuyEom8SKmN3C3QQfRhHH3NlyQP/U/VEFbWkND\n48wdT6PeOx6jHa+h6H/pVU0dEUfvqRWtcvnjQiCSGEEOWpRhU7FUFkLPpKPJ\nQWHBsGtAovCEfu/GO92IDCmtVI1FIN9z0UUIQ81z1vahqDzPM01yClDwVhmF\nl9Wiu2OQPf4j8l+Qt3W1gMlBTLfOQwlX8782gUBcseMC0StR/Jr0KidEEh1f\nUqr+Tkt3aRMhWTSVRZJDGeVvJyHes50nCd5/avEz8C6i44v21vBNAAebbUb6\nh0tyMBHomeT2OVlrnzMrhq0V7Yeb65D4U48E5flXCmtvAY1FaCVd7yR1Q6gW\n+By4brx2tzK7v/+sY2x8kijWKzEr9hKhL5gEW7bRFIJ6hjTBMMipWaQkdcrC\ncArw1I9m7oz7NP3vXklcYl36deMXelfGEwfX6QjbcPSVvDpGwfLMrlPvjjDM\n4/MeTHaaBv73FIiaIWkG1qFrzcsWdb4e0JCs1xerUVVNJ8ImVUlRkcfildGX\nm4gDxJLSseNhjndjSjkLTc7IVOpKmwmCfNhXlero5oAR+ds9kLOHUT+aRicH\njUfXtQFcrMuvQc4XQUfb87XT2elmqHZxmeOil9OJH/kcWb9NKwmMyCl8L/FF\nXa/U\r\n=grHF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cognite.module.js","types":"dist/index.d.ts","engines":{"npm":">= 3.0.0","node":">= 4.0.0"},"gitHead":"ecb36fc1e7053b85f00381571aa886e6dc048ead","scripts":{"lint":"node scripts/lint","test":"true","build":"npm run clean && npm run build:module && npm run build:bundle && npm run esCheck && npm run moveTypes","clean":"rm -rf dist","start":"webpack-dev-server --color --progress --config build/webpack.dev.js","esCheck":"es-check es5 './dist/**/cognite.*.js'","prepush":"yarn lint","lint:fix":"yarn lint --fix","moveTypes":"cp ./src/index.d.ts ./dist/","test:visual":"./tests/visual/run.sh","build:bundle":"webpack -p --color --progress --config build/webpack.prod.bundle.js","build:module":"webpack -p --color --progress --config build/webpack.prod.js","prepublishOnly":"npm run build","lint:checkstyle":"yarn lint --format checkstyle","validateDocLinks":"markdown-link-check README.md && npx markdown-link-check README-dev.md","test:manual:dispose":"cd tests/manual/dispose && yarn && yarn start"},"_npmUser":{"name":"larsmoa","email":"lars.moastuen@cognite.com"},"deprecated":"Replaced by package @cognite/reveal","repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"_npmVersion":"6.14.12","description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","directories":{},"_nodeVersion":"10.24.1","browserslist":["> 1%","last 2 versions","not ie <= 10"],"dependencies":{"three":"0.98.0","right-now":"^1.0.0","is-function":"^1.0.1","query-string":"5","@babel/runtime":"^7.4.4","mixpanel-browser":"^2.27.1","@tweenjs/tween.js":"^17.2.0","simple-statistics":"^7.0.2","mouse-event-offset":"^3.0.2","@cognite/3d-web-parser":"^0.13.5","@cognite/three-combo-controls":"^1.4.1"},"_hasShrinkwrap":false,"devDependencies":{"idb":"^4.0.3","husky":"^0.14.3","mocha":"^5.2.0","eslint":"^4.18.2","tslint":"^5.11.0","webpack":"^4.12.1","es-check":"^5.0.0","prettier":"^1.13.5","stats-js":"^1.0.0","testcafe":"^1.1.3","ts-loader":"^5.3.0","pixelmatch":"^4.0.2","typescript":"^3.1.6","@babel/core":"^7.1.6","webpack-cli":"^3.1.2","@cognite/sdk":"2.0.2","@types/three":"^0.93.28","babel-eslint":"^10.0.1","babel-loader":"^8.0.4","webpack-merge":"^4.1.3","worker-loader":"^2.0.0","@babel/polyfill":"^7.0.0","@types/tween.js":"^17.2.0","@babel/preset-env":"^7.1.6","source-map-loader":"^0.2.4","eslint-plugin-jest":"^21.14.1","webpack-dev-server":"^3.1.11","copy-webpack-plugin":"^4.5.4","eslint-plugin-react":"^7.7.0","html-webpack-plugin":"^3.2.0","markdown-link-check":"^3.7.2","webpack-glsl-loader":"^1.0.1","eslint-config-airbnb":"^16.1.0","eslint-plugin-import":"^2.18.2","@cognite/eslint-config":"^1.0.4","eslint-config-prettier":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-prettier":"^2.6.0","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","webpack-node-externals":"^1.7.2","fork-ts-checker-webpack-plugin":"^0.5.0","@babel/plugin-transform-runtime":"^7.4.4","@cognite/tslint-config-cognite-3d":"^1.0.3","peer-deps-externals-webpack-plugin":"^1.0.4","babel-plugin-transform-class-properties":"^6.24.1"},"peerDependencies":{"@cognite/sdk":"^2.0.2"},"_npmOperationalInternal":{"tmp":"tmp/3d-viewer_6.1.5_1629992871764_0.12465037204229401","host":"s3://npm-registry-packages"}}},"time":{"created":"2018-05-25T11:16:25.164Z","modified":"2026-05-28T14:36:13.467Z","1.2.8":"2018-05-25T11:16:25.261Z","1.2.9":"2018-06-04T10:17:38.290Z","1.3.0":"2018-06-04T12:22:02.139Z","2.0.0":"2018-06-11T14:14:51.318Z","2.0.1":"2018-06-11T15:59:50.574Z","2.0.2":"2018-06-12T15:18:50.815Z","2.0.3":"2018-06-12T15:38:33.810Z","2.0.4":"2018-06-12T23:41:26.851Z","2.0.5":"2018-06-12T23:55:15.552Z","2.1.0":"2018-06-22T08:58:38.808Z","2.1.1":"2018-06-25T12:50:40.448Z","2.1.2":"2018-06-26T20:52:26.264Z","2.1.3":"2018-06-26T20:56:07.607Z","2.1.4":"2018-07-04T15:04:11.980Z","2.2.0":"2018-07-09T12:22:39.034Z","2.2.1":"2018-07-09T12:40:22.222Z","2.2.2":"2018-07-09T12:47:49.620Z","2.2.3":"2018-07-09T13:02:35.235Z","2.2.4":"2018-07-30T13:06:17.173Z","3.0.0-rc1":"2018-09-06T10:41:27.855Z","3.0.0-rc2":"2018-09-07T06:57:06.135Z","3.0.0-rc3":"2018-09-07T10:04:28.244Z","3.0.0-rc4":"2018-09-10T08:58:00.265Z","2.2.5":"2018-09-10T13:20:04.848Z","2.2.6":"2018-09-13T13:15:38.624Z","3.0.0-rc5":"2018-09-13T13:46:26.008Z","3.0.0-rc1.snapshot1":"2018-09-14T12:51:56.358Z","3.0.0-rc6":"2018-09-17T14:22:27.789Z","3.0.0-rc7":"2018-09-17T16:29:37.980Z","3.0.0-rc8":"2018-09-19T09:06:08.847Z","3.0.0":"2018-09-28T14:53:24.363Z","3.1.0":"2018-10-08T19:33:00.865Z","3.1.1":"2018-10-08T19:41:38.059Z","3.2.0":"2018-10-14T12:13:56.134Z","3.2.1":"2018-10-15T06:31:25.454Z","3.2.2":"2018-10-18T14:52:03.237Z","3.3.0":"2018-10-30T08:53:53.574Z","3.3.1":"2018-10-30T09:03:20.318Z","3.4.0":"2018-11-07T18:47:30.400Z","3.4.1":"2018-11-07T19:00:15.757Z","3.5.0":"2018-11-11T16:57:38.905Z","3.5.1":"2018-11-11T21:13:26.734Z","3.5.2":"2018-11-11T21:59:41.545Z","3.5.3":"2018-11-11T22:37:46.759Z","3.6.0":"2018-11-12T10:00:41.670Z","3.7.0":"2018-11-12T17:11:53.649Z","3.7.1":"2018-11-13T13:46:43.673Z","3.7.2":"2018-11-14T12:50:08.542Z","3.7.3":"2018-11-19T12:42:05.925Z","3.8.0":"2018-11-27T11:57:43.587Z","3.8.1":"2018-11-30T09:37:51.635Z","3.8.2":"2019-01-15T09:23:48.624Z","3.9.0-beta.0":"2019-02-04T00:21:25.340Z","3.9.0-beta.1":"2019-02-04T11:13:52.194Z","3.9.0-beta.2":"2019-02-04T13:55:06.901Z","3.9.0-beta.3":"2019-02-05T12:00:11.613Z","3.9.0-beta.4":"2019-02-05T19:54:38.635Z","4.0.0":"2019-02-20T07:37:26.127Z","4.0.0-beta.1":"2019-02-20T07:42:25.054Z","4.0.0-beta.2":"2019-02-20T08:11:05.007Z","4.0.1":"2019-02-20T10:50:58.126Z","4.0.2":"2019-02-20T10:58:51.642Z","4.0.3":"2019-02-27T20:09:20.796Z","4.0.5":"2019-03-02T20:23:56.330Z","4.0.4":"2019-03-02T21:07:46.893Z","4.1.0":"2019-03-07T10:12:18.681Z","4.1.1":"2019-03-07T12:16:42.926Z","5.0.0-beta.0":"2019-04-28T12:37:57.089Z","5.0.0-beta.1":"2019-04-28T21:00:07.947Z","5.0.0-beta.2":"2019-04-29T11:06:30.326Z","5.0.0-beta.3":"2019-05-02T11:11:12.764Z","5.0.0-beta.4":"2019-05-03T05:16:15.851Z","5.0.0-beta.5":"2019-05-03T05:56:01.800Z","5.0.0-beta.6":"2019-05-03T08:38:15.372Z","5.0.0-beta.7":"2019-05-03T09:08:25.093Z","5.0.0-beta.8":"2019-05-03T12:49:41.652Z","5.0.0-beta.9":"2019-05-03T13:04:09.531Z","5.0.0":"2019-05-03T13:22:26.512Z","5.0.1":"2019-05-03T14:12:25.906Z","4.1.2":"2019-05-04T15:58:54.379Z","5.0.2":"2019-05-04T15:59:38.296Z","5.0.3":"2019-05-07T12:34:14.611Z","4.1.3":"2019-05-08T10:04:41.211Z","5.0.5":"2019-05-08T10:07:20.278Z","5.0.4":"2019-05-08T10:09:44.366Z","5.0.6":"2019-05-10T15:17:12.090Z","5.0.7":"2019-05-14T08:54:36.001Z","5.0.8":"2019-05-22T08:51:18.634Z","5.1.0":"2019-05-31T13:09:18.129Z","5.1.1":"2019-05-31T15:41:41.717Z","5.1.2":"2019-06-05T06:55:51.142Z","5.1.3":"2019-06-05T10:15:07.991Z","5.2.0-alpha":"2019-06-26T05:02:48.404Z","5.2.0-beta.1":"2019-07-22T14:56:48.832Z","5.0.3-no-rings-or-cylinders":"2019-07-26T12:24:56.211Z","5.1.3-no-rings-or-cylinders":"2019-07-26T12:30:49.197Z","6.0.0":"2019-07-29T11:40:40.465Z","6.0.1":"2019-07-29T12:02:54.947Z","6.0.2":"2019-07-31T15:44:52.854Z","6.0.3":"2019-08-20T16:30:54.360Z","6.1.0-beta.0":"2019-08-29T08:38:37.929Z","6.1.0":"2019-09-30T14:10:43.834Z","6.1.1-beta.0":"2019-10-07T14:00:59.591Z","6.1.1":"2019-10-14T09:17:39.763Z","6.1.2":"2019-10-15T08:21:33.767Z","6.1.2-cache-with-bounding-box":"2019-11-08T09:40:24.865Z","6.1.2-fix-torus-normal":"2019-11-14T08:24:06.789Z","6.1.2-torus-normal-fix":"2019-11-14T11:25:15.851Z","6.1.2-torus-normal-fix-2":"2019-11-15T09:28:03.774Z","6.1.3":"2019-11-20T14:02:57.180Z","6.1.3-fix-undefined-tree-index":"2019-11-26T09:32:01.338Z","6.1.4":"2020-07-03T09:42:16.601Z","6.1.5":"2021-08-26T15:47:52.016Z"},"bugs":{"url":"https://github.com/cognitedata/3d-viewer/issues"},"license":"UNLICENSED","homepage":"https://github.com/cognitedata/3d-viewer#readme","keywords":["cognite","3d","viewer"],"repository":{"url":"git+https://github.com/cognitedata/3d-viewer.git","type":"git"},"description":"JavaScript viewer to visualize 3D models on Cognite Data Fusion","contributors":[{"name":"Fredrik Anfinsen","email":"fredrik.anfinsen@cognite.com"},{"name":"Fredrik Østrem","email":"fredrik.ostrem@cognite.com"},{"name":"Anders Hafreager","email":"anders.hafreager@cognite.com"}],"maintainers":[{"email":"cicd@cognite.com","name":"cognitecicd"}],"readme":"# Cognite REVEAL 3D Web Viewer\n\n> Visualize Cognite's 3D models in a web browser with [WebGL](https://en.wikipedia.org/wiki/WebGL).\n\n_Note: The component will by default send anonymous usage statistics. This is used to improve the 3D viewer. You can opt out from this in the Cognite3DViewer constructor._\n\n## Table of Contents\n\n- [Install](#install)\n- [Cognite Data Fusion](#cognite-data-fusion)\n- [Usage](#usage)\n  - [Sample code](#sample-code)\n    - [Add progress listeners](#add-progress-listeners)\n    - [Make the model clickable](#make-the-model-clickable)\n- [API Reference](#api-reference)\n- [Support](#support)\n\n## Prerequisites\n\nYou need to install the [Cognite SDK](https://www.npmjs.com/package/@cognite/sdk) which needs to be authenticated before loading the 3D viewer.\n\n## Install\n\nInstall the package with yarn:\n\n    yarn add @cognite/3d-viewer\n\nor npm:\n\n    npm install @cognite/3d-viewer\n\n## Cognite Data Fusion\n\nTo be able to use this 3D viewer you need to have access to Cognite Data Fusion. You can upload 3D models using [Cognite 3D ingestor](http://3d-ingestor.cogniteapp.com), or by looking at [Cognite's API documentation](https://doc.cognitedata.com/api/0.6/#tag/3D). You can then use this viewer to visualize the 3D model in any web-based application on desktop or mobile devices.\n\n## Usage\n\n```js\nimport { Cognite3DViewer, THREE, TWEEN } from '@cognite/3d-viewer';\n//  If you are loading a local file, then just pass it in the localPath when you addModel:\nconst viewer = new Cognite3DViewer();\n// If you are loading more than just local file, you would need to specify a sdk:\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) })\n// Create three.js objects\nconst vector = new THREE.Vector3();\n// Use TWEEN to animate e.g. the camera, see npmjs.com/package/@tweenjs/tween.js\n```\n\n### Requirements\n\nTo be able to use this package you need the following polyfills:\n\n- [babel-polyfill](https://babeljs.io/docs/en/babel-polyfill)\n\n### Sample code\n\nAdding model from CDF\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer({ sdk: new CogniteClient({ ... }) });\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  modelId, // 3D model id\n  revisionId, // The model's revision id\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\nAdding local model\n\n```js\n// The viewer will render to a canvas inside a wrapper container.\n// You can specify the wrapper by setting options.domElement and passing the options argument\n// to the Cognite3DViewer constructor. If not set, it will create a div element for you.\nconst viewer = new Cognite3DViewer();\n\n// You can then add the div to your existing DOM:\ndocument.body.appendChild(viewer.domElement);\n\n// At this point you will only see a black canvas.\n\n// So let's add a 3D model:\nconst options = {\n  localPath: '...',\n};\nviewer.addModel(options).then(function(model) {\n  // Move camera to look at the model\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n> Note: You may need additional styling to the wrapper div container to make it fit your use-case.\n> By default, the wrapper will have this style:\n>\n> ```css\n>  {\n>   width: 100vw;\n>   height: 100vh;\n> }\n> ```\n>\n> The internal canvas will be styled to fill this wrapper.\n\n#### Add progress listeners\n\n```js\nfunction onProgress(progress) {\n  console.log(progress);\n}\n\nfunction onComplete() {\n  console.log('Model loaded');\n}\n\nconst options = {\n  modelId,\n  revisionId,\n  onProgress, // optional\n  onComplete, // optional\n};\nviewer.addModel(options)...\n```\n\n#### Make the viewer clickable\n\n- **See: [getBoundingBox](#getboundingbox)**\n- **See: [getIntersectionFromPixel](#getintersectionfrompixel)**\n- **See: [fitCameraToBoundingBox](#fitcameratoboundingbox)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\n```js\nviewer.on('click', function(event) {\n  const { offsetX, offsetY } = event;\n  const intersection = viewer.getIntersectionFromPixel(offsetX, offsetY);\n  if (intersection !== null) {\n    const { nodeId, point, model } = intersection;\n    console.log('User clicked at world coordinate', point);\n    // highlight the object\n    model.selectNode(nodeId);\n    // make the camera zoom to the object\n    const boundingBox = model.getBoundingBox(nodeId);\n    viewer.fitCameraToBoundingBox(boundingBox, 2000); // 2 sec\n  } else {\n    // Clicked outside the 3D model\n    model.deselectAllNodes();\n  }\n});\n```\n\n#### Load saved camera position from the API\n\nAssume you have the revision object from Cognite Data Fusion which you can get from this [endpoint](https://doc.cognitedata.com/api/0.6/#operation/getRevision).\n\nHere is a code snippet to use the saved camera position:\n\n```js\nconst { target, position } = revision.camera;\nif (Array.isArray(target) && Array.isArray(position)) {\n  // Create three.js objects\n  const positionVector = new THREE.Vector3(...position);\n  const targetVector = new THREE.Vector3(...target);\n  // Apply transformation matrix\n  positionVector.applyMatrix4(model.matrix);\n  targetVector.applyMatrix4(model.matrix);\n  // Set on viewer\n  viewer.setCameraPosition(positionVector);\n  viewer.setCameraTarget(targetVector);\n} else {\n  viewer.fitCameraToModel(model, 0);\n}\n```\n\n## API Reference\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n#### Table of Contents\n\n- [Cognite3DViewer](#cognite3dviewer)\n  - [Parameters](#parameters)\n  - [Examples](#examples)\n  - [dispose](#dispose)\n  - [domElement](#domelement)\n  - [isBrowserSupported](#isbrowsersupported)\n  - [on](#on)\n  - [off](#off)\n  - [addModel](#addmodel)\n  - [addObject3D](#addobject3d)\n  - [removeObject3D](#removeobject3d)\n  - [setSlicingPlanes](#setslicingplanes)\n  - [getCameraPosition](#getcameraposition)\n  - [getCameraTarget](#getcameratarget)\n  - [setCameraPosition](#setcameraposition)\n  - [setCameraTarget](#setcameratarget)\n  - [fitCameraToBoundingBox](#fitcameratoboundingbox)\n  - [disableKeyboardNavigation](#disablekeyboardnavigation)\n  - [enableKeyboardNavigation](#enablekeyboardnavigation)\n  - [fitCameraToModel](#fitcameratomodel)\n  - [worldToScreen](#worldtoscreen)\n  - [getIntersectionFromPixel](#getintersectionfrompixel)\n  - [getScreenshot](#getscreenshot)\n- [Intersection](#intersection)\n- [Cognite3DModel](#cognite3dmodel)\n  - [getSubtreeNodeIds](#getsubtreenodeids)\n  - [getBoundingBox](#getboundingbox)\n  - [iterateNodes](#iterateNodes)\n  - [iterateSubtree](#iterateSubtree)\n  - [getNodeColor](#getnodecolor)\n  - [setNodeColor](#setnodecolor)\n  - [resetNodeColor](#resetnodecolor)\n  - [selectNode](#selectnode)\n  - [deselectNode](#deselectnode)\n  - [deselectAllNodes](#deselectallnodes)\n  - [showNode](#shownode)\n  - [showAllNodes](#showallnodes)\n  - [hideAllNodes](#hideallnodes)\n  - [hideNode](#hidenode)\n\n### Cognite3DViewer\n\n`Cognite3DViewer` is the root class of a Cognite 3D viewer. It controls all aspects of the 3D viewer.\n\n#### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.domElement` **[Element](https://developer.mozilla.org/docs/Web/API/Element)?** \\-- An existing DOM element that we will render into. This corresponds to the domElement property below.\n  - `options.noBackground` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** \\-- Transparent background or not (optional, default `false`)\n  - `options.logMetrics` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Send anonymous usage statistics. (optional, default `true`)\n  - `options.highlightColor` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** \\-- Highlight color of the selected objects (optional, default `THREE.Color(0,0,1)`)\n  - `options.viewCube` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** \\-- If defined then show a view cube and snap location of the view cube to this value. One of: 'topleft', 'topright', 'bottomleft', 'bottomright'.\n\n#### Examples\n\n```javascript\nconst viewer = new Cognite3DViewer({\n  noBackground: true,\n  sdk: <Instance of CogniteClient>\n});\n```\n\n#### dispose\n\n- **See: <https://threejs.org/docs/#manual/en/introduction/How-to-dispose-of-objects>**\n\nDispose of WebGL resources. Can be used to free up memory when the viewer is no longer in use.\n\n##### Examples\n\n```javascript\n// Viewer is no longer in use, free up memory\nviewer.dispose();\n```\n\n#### domElement\n\nThe DOM element the viewer will insert its rendering canvas into.\nThe DOM element can be specified in the options when the viewer is created.\nIf not specified, the DOM element will be created automatically.\nThe DOM element cannot be changed after the viewer has been created.\n\n#### isBrowserSupported\n\nCheck if the viewer supports the current browser\n\n##### Examples\n\n```javascript\nif (!Cognite3DViewer.isBrowserSupported()) {\n  // create an error message to the user?\n}\n```\n\n#### on\n\n- **See: [off](#off)**\n\nAdd event listener to the viewer\ncall [off](#off) to remove an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **function (event:PointerEvent)** \\-- The callback function\n\n##### Examples\n\n```javascript\nconst onClick = event => { ... };\nviewer.on('click', onClick);\n```\n\n```javascript\nviewer.on('cameraChange', (position, target) => {\n  console.log('Camera changed: ', position, target);\n});\n```\n\n#### off\n\n- **See: [on](#on)**\n\nRemove event listener from the viewer\ncall [on](#on) to add an event listener\n\n##### Parameters\n\n- `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** \\-- Event type ('click' or 'cameraChange')\n- `func` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** \\-- The callback function used in [on](#on)\n\n##### Examples\n\n```javascript\nviewer.off('click', onClick);\n```\n\n#### addModel\n\nAdd a new 3D model to the viewer. Call [fitCameraToModel](#fitcameratomodel) to focus camera on the model after it has loaded.\n\n##### Parameters\n\n- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)\n  - `options.modelId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's id\n  - `options.revisionId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The model's revision id\n  - `options.geometryFilter` { boundingBox?: **THREE.Box3** } \\-- Filter out geometries. We currently only support bounding box filter, i.e. load only geometries inside the given bounding box.\n  - `options.onProgress` **function (progress: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object))?** \\-- Callback for progress events\n  - `options.onComplete` **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** \\-- Callback when the model is fully loaded\n\n##### Examples\n\n```javascript\n// Load a model and focus camera on the model\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n};\nviewer.addModel(options).then(model => {\n  viewer.fitCameraToModel(model, 0);\n});\n```\n\n```javascript\n// Load only geometries inside a bounding box, then focus camera on that area\nconst boundingBox = new THREE.Box3(\n  new THREE.Vector3(0, 0, 0),\n  new THREE.Vector3(10, 10, 10)\n);\n\nconst options = {\n  modelId: 'COGNITE_3D_MODEL_ID',\n  revisionId: 'COGNITE_3D_REVISION_ID',\n  geometryFilter: { boundingBox },\n};\n\nviewer.addModel(options).then(model => {\n  // Transform the bounding box to model space\n  boundingBox.applyMatrix4(model.matrix);\n  // Focus camera on bounding box\n  viewer.fitCameraToBoundingBox(boundingBox);\n});\n```\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[Cognite3DModel](#cognite3dmodel)>**\n\n#### addObject3D\n\nAdd a THREE.Object3D to the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\n```\n\n#### removeObject3D\n\nRemove a THREE.Object3D from the viewer\n\n##### Parameters\n\n- `object` **THREE.Object3D** \\-- A three.js object\n\n##### Examples\n\n```javascript\nconst sphere = new THREE.Mesh(\n  new THREE.SphereBufferGeometry(),\n  new THREE.MeshBasicMaterial()\n);\nviewer.addObject3D(sphere);\nviewer.removeObject3D(sphere);\n```\n\n#### setSlicingPlanes\n\nSets per-pixel slicing planes. Pixels behind any of the planes will be sliced away.\n\n##### Parameters\n\n- `slicingPlanes` **THREE.Plane[]** \\-- The planes to use for slicing\n\n##### Examples\n\n```javascript\n// Hide pixels with values less than 0 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values greater than 20 in the x direction\nconst plane = new THREE.Plane(new THREE.Vector3(-1, 0, 0), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Hide pixels with values less than 0 in the x direction or greater than 0 in the y direction\nconst xPlane = new THREE.Plane(new THREE.Vector3(1, 0, 0), 0);\nconst yPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0);\nviewer.setSlicingPlanes([xPlane, yPlane]);\n```\n\n```javascript\n// Hide pixels behind an arbitrary, non axis-aligned plane\nconst plane = new THREE.Plane(new THREE.Vector3(1.5, 20, -19), 20);\nviewer.setSlicingPlanes([plane]);\n```\n\n```javascript\n// Disable slicing planes\nviewer.setSlicingPlanes([]);\n```\n\n#### getCameraPosition\n\nReturns camera's position\n\n##### Examples\n\n```javascript\nconst position = viewer.getCameraPosition();\n```\n\nReturns **THREE.Vector3** Position in world space\n\n#### getCameraTarget\n\nReturns camera's target\n\n##### Examples\n\n```javascript\nconst target = viewer.getCameraTarget();\n```\n\nReturns **THREE.Vector3** Target in world space\n\n#### setCameraPosition\n\nSet camera's position\n\n##### Parameters\n\n- `position` **THREE.Vector3** \\-- Position in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### setCameraTarget\n\nSet camera's target\n\n##### Parameters\n\n- `target` **THREE.Vector3** \\-- Target in world space\n\n##### Examples\n\n```javascript\n// store position, target\nconst position = viewer.getCameraPosition();\nconst target = viewer.getCameraTarget();\n// restore position, target\nviewer.setCameraPosition(position);\nviewer.setCameraTarget(target);\n```\n\n#### fitCameraToBoundingBox\n\n- **See: [getBoundingBox](#getboundingbox)**\n  Move camera to a place where the content of a bounding box is visible to the camera.\n\n##### Parameters\n\n- `box` **THREE.Box3** \\-- The bounding box in world space\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The duration of the animation moving the camera. Set this to 0 (zero) to disable animation.\n- `radiusFactor` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- The ratio of the distance from camera to center of box and radius of the box (optional, default `4`)\n\n##### Examples\n\n```javascript\n// Focus camera on bounding box over 500 milliseconds\nviewer.fitCameraToBoundingBox(boundingBox, 500);\n```\n\n```javascript\n// Focus camera on bounding box instantaneously\nviewer.fitCameraToBoundingBox(boundingBox, 0);\n```\n\n```javascript\n// Place the camera closer to the bounding box\nviewer.fitCameraToBoundingBox(boundingBox, 500, 2);\n```\n\n```javascript\n// Animate camera to focus on a specific object with a given node id\nconst nodeId = 1234;\nconst boundingBox = model.getBoundingBox(nodeId);\nviewer.fitCameraToBoundingBox(boundingBox, 1000);\n```\n\n#### disableKeyboardNavigation\n\n- **See: [enableKeyboardNavigation](#enablekeyboardnavigation)**\n\nDisables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Disable keyboard navigation on textbox focus\ninputElement.addEventListener('focus', () => {\n  viewer.disableKeyboardNavigation();\n});\n```\n\n#### enableKeyboardNavigation\n\n- **See: [disableKeyboardNavigation](#disablekeyboardnavigation)**\n\nEnables camera navigation with the keyboard.\n\n##### Examples\n\n```javascript\n// Enable keyboard navigation on textbox blur\ninputElement.addEventListener('blur', () => {\n  viewer.enableKeyboardNavigation();\n});\n```\n\n#### fitCameraToModel\n\nMove camera to a place where the 3D model is visible. It uses the bounding box of the 3D model and calls [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n##### Examples\n\n```javascript\n// Fit camera to model\nviewer.fitCameraToModel(model);\n```\n\n```javascript\n// Fit camera to model over 500 milliseconds\nviewer.fitCameraToModel(model, 500);\n```\n\n```javascript\n// Fit camera to model instantaneously\nviewer.fitCameraToModel(model, 0);\n```\n\n##### Parameters\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The 3D model\n- `duration` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Same as for [fitCameraToBoundingBox](#fitcameratoboundingbox)\n\n#### worldToScreen\n\n- **See: <https://www.w3schools.com/graphics/canvas_coordinates.asp>**\n\nConvert a point in world space to its coordinates in the canvas. This can be used to place HTML objects near 3D objects on top of the 3D viewer.\n\n##### Parameters\n\n- `point` **THREE.Vector3** \\-- World space coordinate.\n- `normalize` **bool?** \\-- Optional. If true, coordinates are normalized into [0,1]. If false, the values are in the range \\[0, &lt;canvas_size>). (optional, default `false`)\n\n##### Examples\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\n```\n\n```javascript\n// Find normalized canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point normalized in the range [0,1]\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter, true);\n```\n\n```javascript\n// Find canvas coordinates, i.e. where on the screen it is rendered, for an object with a given node id\nconst boundingBoxCenter = new THREE.Vector3();\n// Find center of bounding box in world space\nmodel.getBoundingBox(nodeId).getCenter(boundingBoxCenter);\n// Screen coordinates of that point\nconst screenCoordinates = viewer.worldToScreen(boundingBoxCenter);\nif (screenCoordinates == null) {\n  // Object not visible on screen\n} else {\n  // Object is visible on screen\n}\n```\n\nReturns **(THREE.Vector2 | null)** \\-- Returns 2D coordinates if the point is visible on screen, or `null` if object is outside screen.\n\n#### getIntersectionFromPixel\n\nRaycasting model(s) for finding where the ray intersects with the model.\n\n##### Parameters\n\n- `x` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- X coordinate in pixels (relative to the domElement)\n- `y` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- Y coordinate in pixels (relative to the domElement)\n- `cognite3DModel` **[Cognite3DModel](#cognite3dmodel)?** \\-- If specified then only give results for this model\n\n##### Examples\n\n```javascript\nconst intersection = viewer.getIntersectionFromPixel(50, 100); // x = 50 pixels from the left, y = 100 pixels from the top\nif (intersection)\n  // it was a hit\n  console.log(\n    'You hit model ',\n    intersection.model,\n    ' at the node with id ',\n    intersection.nodeId,\n    ' at this exact point ',\n    intersection.point\n  );\n```\n\nReturns **([Intersection](#intersection) | null)** \\-- If there was an intersection then return the intersection object - otherwise it returns null if there was no intersections.\n\n#### getScreenshot\n\nTake screenshot from the current camera position.\n\n##### Examples\n\n```javascript\n// Add screenshot with resolution of the canvas to the page\nconst url = await viewer.getScreenshot();\nconst image = document.createElement('img');\nimage.src = url;\ndocument.body.appendChild(url);\n```\n\n```javascript\n// Take screenshot with custom resolution\nconst url = await viewer.getScreenshot(1920, 1080);\n```\n\n##### Parameters\n\n- `width` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Width of the final image. Default is current canvas size.\n- `height` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- Height of the final image. Default is current canvas size.\n\nReturns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)&lt;[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** A [Blob URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) to the image ('image/png')\n\n### Intersection\n\nType: [object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n#### Properties\n\n- `model` **[Cognite3DModel](#cognite3dmodel)** \\-- The node id\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The nodeId of the first intersected node\n- `point` **THREE.Vector3** \\-- The 3D position of the intersection point in the world coordinate system\n\n### Cognite3DModel\n\n**Extends THREE.Object3D**\n\n`Cognite3DModel` is the class representing a Cognite 3D model and its state\n\n#### modelId\n\nThe id of the model in Cognite Data Fusion\n\n#### revisionId\n\nThe id of the model revision in Cognite Data Fusion\n\n#### getSubtreeNodeIds\n\nGet all node ids in a subtree where the root node has id 'nodeId'\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The ID of the root node\n- `subtreeSize` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** \\-- If you already know the subtreeSize, this will avoid an extra API call\n\nReturns **\\[[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)]** List of nodeIds in the subtree\n\n#### getBoundingBox\n\nGet bounding box of a node\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `box` **THREE.Box3?** \\-- Optional target. Specify this to increase performance if the box can be reused.\n\n##### Examples\n\n```javascript\nconst box = model.getBoundingBox(nodeId);\n```\n\n```javascript\nconst reusableBox = new THREE.Box3();\nconst box = model.getBoundingBox(nodeId, reusableBox);\n// box === reusableBox\n```\n\nReturns **THREE.Box3**\n\n#### iterateNodes\n\nGo through the node tree and apply an action to each node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await model.iterateNodes(console.log);\n```\n\n##### Parameters\n\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n\nReturns **void**\n\n#### iterateSubtree\n\nGo through the subtree a node of the tree and apply an action to each subtree node that has a node ID.\n\n##### Examples\n\n```javascript\nconst url = await viewer.iterateSubtree(1111111111, console.log);\n```\n\n##### Parameters\n\n- `nodeId` **number** \\-- The id of the node whose subtree will have action applied to\n- `action` **Callback** \\-- Callback function taking in a nodeId and treeId\n- `treeIndex?` **number** \\-- (Optional) The index within the tree for the given nodeId\n- `subtreeSize?` **number** \\-- (Optional) The size of the subtree starting from nodeId\n\nReturns **Promise&lt;boolean>** Whether a valid nodeId was given or not\n\n#### getNodeColor\n\n- **See: [setNodeColor](#setnodecolor)**\n\nReturn the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\nReturns **{r: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), g: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number), b: [number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)}** (r, g, b in the range [0, 255])\n\n#### setNodeColor\n\n- **See: [getNodeColor](#getnodecolor)**\n\nSet the color on a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `r` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The red color value (0-255)\n- `g` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The green color value (0-255)\n- `b` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The blue color value (0-255)\n\n#### resetNodeColor\n\nReset a node's color to its original color.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### selectNode\n\n- **See: [deselectNode](#deselectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as selected. Only visible nodes can be selected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectNode\n\n- **See: [selectNode](#selectnode)**\n- **See: [deselectAllNodes](#deselectallnodes)**\n\nMark a node as deselected.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### deselectAllNodes\n\nMark all selected nodes as deselected.\n\n#### showNode\n\nShow a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n\n#### showAllNodes\n\nShow all nodes.\n\n#### hideAllNodes\n\nHide all nodes.\n\n##### Parameters\n\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n#### hideNode\n\nHide a node.\n\n##### Parameters\n\n- `nodeId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** \\-- The node's id\n- `ghost` **bool** \\-- Hide with ghost effect (optional, default `false`)\n\n## Support\n\nFor support contact <mailto:support@cognite.com>\n","readmeFilename":"README.md"}