{"_id":"@blaineam/videojs-vr","_rev":"7-7241342012ccc60cb4bedd162a8255e2","name":"@blaineam/videojs-vr","dist-tags":{"latest":"3.3.0"},"versions":{"3.0.0":{"name":"@blaineam/videojs-vr","version":"3.0.0","keywords":["videojs","videojs-plugin"],"author":{"name":"Blaine Miller"},"license":"MIT","_id":"@blaineam/videojs-vr@3.0.0","maintainers":[{"name":"blaineam","email":"blaine@wemiller.com"}],"homepage":"https://github.com/blaineam/videojs-vr#readme","bugs":{"url":"https://github.com/blaineam/videojs-vr/issues"},"dist":{"shasum":"ba122839bf9c9bc74f546bf2bf7aa103328b7f1d","tarball":"https://registry.npmjs.org/@blaineam/videojs-vr/-/videojs-vr-3.0.0.tgz","fileCount":27,"integrity":"sha512-ls7oRaLC4TPzokigwwzPgzC3V2ffqW/wASmyPffXhaI7sJ31Y3c/xBc6mndnVqeOOGJWBvqCPBs+qe+7tQqFPA==","signatures":[{"sig":"MEUCIE63O6Wzu0ybERrk8gaQ4CB1oahZLdIwQoOgyApMl+MOAiEAjfQZJK8UYCeX1s3ZLl3/I9YL+XquCGT3Hg2bJcrk5DI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blaineam%2fvideojs-vr@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4889844},"main":"dist/videojs-vr.cjs.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"dist/videojs-vr.es.js","gitHead":"9cdfbdae06603fbdeab4706fdc2f47296361bbe3","scripts":{"lint":"vjsstandard","test":"npm run build-test && karma start scripts/karma.conf.js","build":"npm-run-all -s clean -p build:*","clean":"shx rm -rf ./dist ./test/dist && shx mkdir -p ./dist ./test/dist","start":"npm-run-all -p server watch","watch":"npm-run-all -p watch:*","server":"karma start scripts/karma.conf.js --singleRun=false --auto-watch","netlify":"npm run build && node scripts/netlify.js","version":"is-prerelease || npm run update-changelog && git add CHANGELOG.md","build:js":"rollup -c scripts/rollup.config.js","posttest":"shx cat test/dist/coverage/text.txt","watch:js":"npm run build:js -- -w","build:css":"sass --no-source-map src/plugin.scss dist/videojs-vr.css","watch:css":"npm run build:css -- -w","build-prod":"cross-env-shell NO_TEST_BUNDLE=1 'npm run build'","build-test":"cross-env-shell TEST_BUNDLE_ONLY=1 'npm run build'","build:lang":"vjslang --dir dist/lang","prepublishOnly":"npm-run-all build-prod && vjsverify --skip-require --verbose --skip-syntax","update-changelog":"conventional-changelog -p videojs -i CHANGELOG.md -s"},"_npmUser":{"name":"blaineam","email":"blaine@wemiller.com"},"repository":{"url":"git+https://github.com/blaineam/videojs-vr.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to add 360, 180, and VR video support to video.js with full WebXR support, VR HUD controls, and in-VR media gallery.","directories":{},"lint-staged":{"*.js":"vjsstandard --fix","README.md":"doctoc --notitle"},"vjsstandard":{"ignore":["dist","docs","vendor","test/dist"]},"_nodeVersion":"20.19.6","dependencies":{"three":"0.125.2","global":"^4.4.0","video.js":"^6 || ^7","@babel/runtime":"^7.14.5","webvr-polyfill":"0.10.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"sass":"^1.34.1","karma":"^6.3.4","sinon":"^7.2.2","rollup":"2.42.0","omnitone":"^1.3.0","rollup-plugin-re":"^1.0.7","videojs-standard":"^9.0.0","videojs-languages":"^2.0.0","videojs-generator-verify":"~4.0.0","@videojs/generator-helpers":"^3.0.1","videojs-generate-karma-config":"~8.0.0","videojs-generate-rollup-config":"7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/videojs-vr_3.0.0_1766452114209_0.9361292323528811","host":"s3://npm-registry-packages-npm-production"},"generator-videojs-plugin":{"version":"7.7.3"}},"3.1.0":{"name":"@blaineam/videojs-vr","version":"3.1.0","keywords":["videojs","videojs-plugin"],"author":{"name":"Blaine Miller"},"license":"MIT","_id":"@blaineam/videojs-vr@3.1.0","maintainers":[{"name":"blaineam","email":"blaine@wemiller.com"}],"homepage":"https://github.com/blaineam/videojs-vr#readme","bugs":{"url":"https://github.com/blaineam/videojs-vr/issues"},"dist":{"shasum":"24079ac081334fa4cb576c859fb2ca30d6a9e918","tarball":"https://registry.npmjs.org/@blaineam/videojs-vr/-/videojs-vr-3.1.0.tgz","fileCount":27,"integrity":"sha512-UCrIT4SZUol/Wf0vftoGqLj1us6Ewckm7xj0yuUUpCrLGmOdNwZJaPvUmYgLJ1XalDrHfVc1RhdLbEI/rNJK3g==","signatures":[{"sig":"MEYCIQCPD7WY0MlIcL9eoZqhblL7eZKyrtgSRApchTxltOTftgIhAK8wkQ7OIKwbMAwcCA5PLa3sfrCgIvXNI3Wu9Rzle0+5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blaineam%2fvideojs-vr@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5013518},"main":"dist/videojs-vr.cjs.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"dist/videojs-vr.es.js","gitHead":"e6e76356494a4249283ba6f6fe8093704995159b","scripts":{"lint":"vjsstandard","test":"npm run build-test && karma start scripts/karma.conf.js","build":"npm-run-all -s clean -p build:*","clean":"shx rm -rf ./dist ./test/dist && shx mkdir -p ./dist ./test/dist","start":"npm-run-all -p server watch","watch":"npm-run-all -p watch:*","server":"karma start scripts/karma.conf.js --singleRun=false --auto-watch","netlify":"npm run build && node scripts/netlify.js","version":"is-prerelease || npm run update-changelog && git add CHANGELOG.md","build:js":"rollup -c scripts/rollup.config.js","posttest":"shx cat test/dist/coverage/text.txt","watch:js":"npm run build:js -- -w","build:css":"sass --no-source-map src/plugin.scss dist/videojs-vr.css","watch:css":"npm run build:css -- -w","build-prod":"cross-env-shell NO_TEST_BUNDLE=1 'npm run build'","build-test":"cross-env-shell TEST_BUNDLE_ONLY=1 'npm run build'","build:lang":"vjslang --dir dist/lang","prepublishOnly":"npm-run-all build-prod && vjsverify --skip-require --verbose --skip-syntax","update-changelog":"conventional-changelog -p videojs -i CHANGELOG.md -s"},"_npmUser":{"name":"blaineam","email":"blaine@wemiller.com"},"repository":{"url":"git+https://github.com/blaineam/videojs-vr.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to add 360, 180, and VR video support to video.js with full WebXR support, VR HUD controls, and in-VR media gallery.","directories":{},"lint-staged":{"*.js":"vjsstandard --fix","README.md":"doctoc --notitle"},"vjsstandard":{"ignore":["dist","docs","vendor","test/dist"]},"_nodeVersion":"20.19.6","dependencies":{"three":"0.125.2","global":"^4.4.0","video.js":"^6 || ^7","@babel/runtime":"^7.14.5","webvr-polyfill":"0.10.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"sass":"^1.34.1","karma":"^6.3.4","sinon":"^7.2.2","rollup":"2.42.0","omnitone":"^1.3.0","rollup-plugin-re":"^1.0.7","videojs-standard":"^9.0.0","videojs-languages":"^2.0.0","videojs-generator-verify":"~4.0.0","@videojs/generator-helpers":"^3.0.1","videojs-generate-karma-config":"~8.0.0","videojs-generate-rollup-config":"7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/videojs-vr_3.1.0_1767586091831_0.6069200119808666","host":"s3://npm-registry-packages-npm-production"},"generator-videojs-plugin":{"version":"7.7.3"}},"3.1.1":{"name":"@blaineam/videojs-vr","version":"3.1.1","keywords":["videojs","videojs-plugin"],"author":{"name":"Blaine Miller"},"license":"MIT","_id":"@blaineam/videojs-vr@3.1.1","maintainers":[{"name":"blaineam","email":"blaine@wemiller.com"}],"homepage":"https://github.com/blaineam/videojs-vr#readme","bugs":{"url":"https://github.com/blaineam/videojs-vr/issues"},"dist":{"shasum":"758c40b572495c6c5f6ac18e9f62a074df711db3","tarball":"https://registry.npmjs.org/@blaineam/videojs-vr/-/videojs-vr-3.1.1.tgz","fileCount":27,"integrity":"sha512-3W69DgimXeU9RPa7l4x8+37GExWn/OlOVP+1QrrQ4R7yuqCuDD3slKPTNEFzITyHXN8XpVdEAwdH3oFeElYg+g==","signatures":[{"sig":"MEQCIARFGY4zBjfulzvop9nJ8cpZqu/wpwt+e6tDM2lhGiSKAiB9use/yWxPSTE1Nsl9VISypUMHCuxE1XvX2xJCkxTfTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blaineam%2fvideojs-vr@3.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5014162},"main":"dist/videojs-vr.cjs.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"dist/videojs-vr.es.js","gitHead":"46e9f5ba8f7b444da859111c0032d817596eff61","scripts":{"lint":"vjsstandard","test":"npm run build-test && karma start scripts/karma.conf.js","build":"npm-run-all -s clean -p build:*","clean":"shx rm -rf ./dist ./test/dist && shx mkdir -p ./dist ./test/dist","start":"npm-run-all -p server watch","watch":"npm-run-all -p watch:*","server":"karma start scripts/karma.conf.js --singleRun=false --auto-watch","netlify":"npm run build && node scripts/netlify.js","version":"is-prerelease || npm run update-changelog && git add CHANGELOG.md","build:js":"rollup -c scripts/rollup.config.js","posttest":"shx cat test/dist/coverage/text.txt","watch:js":"npm run build:js -- -w","build:css":"sass --no-source-map src/plugin.scss dist/videojs-vr.css","watch:css":"npm run build:css -- -w","build-prod":"cross-env-shell NO_TEST_BUNDLE=1 'npm run build'","build-test":"cross-env-shell TEST_BUNDLE_ONLY=1 'npm run build'","build:lang":"vjslang --dir dist/lang","prepublishOnly":"npm-run-all build-prod && vjsverify --skip-require --verbose --skip-syntax","update-changelog":"conventional-changelog -p videojs -i CHANGELOG.md -s"},"_npmUser":{"name":"blaineam","email":"blaine@wemiller.com"},"repository":{"url":"git+https://github.com/blaineam/videojs-vr.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to add 360, 180, and VR video support to video.js with full WebXR support, VR HUD controls, and in-VR media gallery.","directories":{},"lint-staged":{"*.js":"vjsstandard --fix","README.md":"doctoc --notitle"},"vjsstandard":{"ignore":["dist","docs","vendor","test/dist"]},"_nodeVersion":"20.19.6","dependencies":{"three":"0.125.2","global":"^4.4.0","video.js":"^6 || ^7","@babel/runtime":"^7.14.5","webvr-polyfill":"0.10.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"sass":"^1.34.1","karma":"^6.3.4","sinon":"^7.2.2","rollup":"2.42.0","omnitone":"^1.3.0","rollup-plugin-re":"^1.0.7","videojs-standard":"^9.0.0","videojs-languages":"^2.0.0","videojs-generator-verify":"~4.0.0","@videojs/generator-helpers":"^3.0.1","videojs-generate-karma-config":"~8.0.0","videojs-generate-rollup-config":"7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/videojs-vr_3.1.1_1767681799626_0.9527818536280781","host":"s3://npm-registry-packages-npm-production"},"generator-videojs-plugin":{"version":"7.7.3"}},"3.1.3":{"name":"@blaineam/videojs-vr","version":"3.1.3","keywords":["videojs","videojs-plugin"],"author":{"name":"Blaine Miller"},"license":"MIT","_id":"@blaineam/videojs-vr@3.1.3","maintainers":[{"name":"blaineam","email":"blaine@wemiller.com"}],"homepage":"https://github.com/blaineam/videojs-vr#readme","bugs":{"url":"https://github.com/blaineam/videojs-vr/issues"},"dist":{"shasum":"a7653fce119c12a41fcc0bde7fb556cc40ea7f0c","tarball":"https://registry.npmjs.org/@blaineam/videojs-vr/-/videojs-vr-3.1.3.tgz","fileCount":27,"integrity":"sha512-ixSkflko3E1gpN8Kb4s8e3ZGFH3t3E0H++rmFrUZFuXmELyNtp+TVkizRpY5OabobO8d9apO8cfdS4HEj4CH8w==","signatures":[{"sig":"MEYCIQCu6IqIC5UMCq9dadHB+Jk+q3MHXOZkOGil8l7ht6ZiTQIhANoq1Q+83Og2qLGdOCduVotD45I6d2WAvKxN2H1Ab/At","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blaineam%2fvideojs-vr@3.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6096989},"main":"dist/videojs-vr.cjs.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"dist/videojs-vr.es.js","gitHead":"5857687d8f6dbf30a65cefe804edbb3d495314d0","scripts":{"lint":"vjsstandard","test":"npm run build-test && karma start scripts/karma.conf.js","build":"npm-run-all -s clean -p build:*","clean":"shx rm -rf ./dist ./test/dist && shx mkdir -p ./dist ./test/dist","start":"npm-run-all -p server watch","watch":"npm-run-all -p watch:*","server":"karma start scripts/karma.conf.js --singleRun=false --auto-watch","netlify":"npm run build && node scripts/netlify.js","version":"is-prerelease || npm run update-changelog && git add CHANGELOG.md","build:js":"rollup -c scripts/rollup.config.js","posttest":"shx cat test/dist/coverage/text.txt","watch:js":"npm run build:js -- -w","build:css":"sass --no-source-map src/plugin.scss dist/videojs-vr.css","watch:css":"npm run build:css -- -w","build-prod":"cross-env-shell NO_TEST_BUNDLE=1 'npm run build'","build-test":"cross-env-shell TEST_BUNDLE_ONLY=1 'npm run build'","build:lang":"vjslang --dir dist/lang","prepublishOnly":"npm-run-all build-prod && vjsverify --skip-require --verbose --skip-syntax","update-changelog":"conventional-changelog -p videojs -i CHANGELOG.md -s"},"_npmUser":{"name":"blaineam","email":"blaine@wemiller.com"},"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","micromatch":">=4.0.8","underscore":">=1.13.8","trim-newlines":">=4.0.0","serialize-javascript":">=6.0.2"},"repository":{"url":"git+https://github.com/blaineam/videojs-vr.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to add 360, 180, and VR video support to video.js with full WebXR support, VR HUD controls, and in-VR media gallery.","directories":{},"lint-staged":{"*.js":"vjsstandard --fix","README.md":"doctoc --notitle"},"vjsstandard":{"ignore":["dist","docs","vendor","test/dist"]},"_nodeVersion":"20.20.2","dependencies":{"three":"0.183.2","global":"^4.4.0","video.js":"^6 || ^7","@babel/runtime":"^7.14.5","webvr-polyfill":"0.10.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"sass":"^1.34.1","karma":"^6.3.4","sinon":"^7.2.2","rollup":"^2.80.0","omnitone":"^1.3.0","rollup-plugin-re":"^1.0.7","videojs-standard":"^9.0.0","videojs-languages":"^2.0.0","videojs-generator-verify":"~4.0.0","@videojs/generator-helpers":"^3.0.1","videojs-generate-karma-config":"~8.0.0","videojs-generate-rollup-config":"^7.0.2"},"_npmOperationalInternal":{"tmp":"tmp/videojs-vr_3.1.3_1775514985077_0.20835849979642318","host":"s3://npm-registry-packages-npm-production"},"generator-videojs-plugin":{"version":"7.7.3"}},"3.1.4":{"name":"@blaineam/videojs-vr","version":"3.1.4","keywords":["videojs","videojs-plugin"],"author":{"name":"Blaine Miller"},"license":"MIT","_id":"@blaineam/videojs-vr@3.1.4","maintainers":[{"name":"blaineam","email":"blaine@wemiller.com"}],"homepage":"https://github.com/blaineam/videojs-vr#readme","bugs":{"url":"https://github.com/blaineam/videojs-vr/issues"},"dist":{"shasum":"e711c1ccec754f1ac56ebbe22a1647ea2f1cbc7b","tarball":"https://registry.npmjs.org/@blaineam/videojs-vr/-/videojs-vr-3.1.4.tgz","fileCount":27,"integrity":"sha512-6L7NxCyvvc3D788yuQGo6S24qeqWz7oIa7WcUWGaTyq6lsiHJI84S5lIyKSgTO0bVIPKsAdSn7TY66CtNuyPLQ==","signatures":[{"sig":"MEUCIQC/Eu+bAEE/uttmvwcV0A3TKVYjrYaoGnoO6C7/8WuA0wIgErMl9HSaqVVaQ+DQRrGzwrclQicCcmwkonOF0Lkj8R0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blaineam%2fvideojs-vr@3.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6127846},"main":"dist/videojs-vr.cjs.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"dist/videojs-vr.es.js","gitHead":"fff7d566f880016c27d48f39648807b5815e2b19","scripts":{"lint":"vjsstandard","test":"npm run build-test && karma start scripts/karma.conf.js","build":"npm-run-all -s clean -p build:*","clean":"shx rm -rf ./dist ./test/dist && shx mkdir -p ./dist ./test/dist","start":"npm-run-all -p server watch","watch":"npm-run-all -p watch:*","server":"karma start scripts/karma.conf.js --singleRun=false --auto-watch","netlify":"npm run build && node scripts/netlify.js","version":"is-prerelease || npm run update-changelog && git add CHANGELOG.md","build:js":"rollup -c scripts/rollup.config.js","posttest":"shx cat test/dist/coverage/text.txt","watch:js":"npm run build:js -- -w","build:css":"sass --no-source-map src/plugin.scss dist/videojs-vr.css","watch:css":"npm run build:css -- -w","build-prod":"cross-env-shell NO_TEST_BUNDLE=1 'npm run build'","build-test":"cross-env-shell TEST_BUNDLE_ONLY=1 'npm run build'","build:lang":"vjslang --dir dist/lang","prepublishOnly":"npm-run-all build-prod && vjsverify --skip-require --verbose --skip-syntax","update-changelog":"conventional-changelog -p videojs -i CHANGELOG.md -s"},"_npmUser":{"name":"blaineam","email":"blaine@wemiller.com"},"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","micromatch":">=4.0.8","underscore":">=1.13.8","trim-newlines":">=4.0.0","serialize-javascript":">=6.0.2"},"repository":{"url":"git+https://github.com/blaineam/videojs-vr.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to add 360, 180, and VR video support to video.js with full WebXR support, VR HUD controls, and in-VR media gallery.","directories":{},"lint-staged":{"*.js":"vjsstandard --fix","README.md":"doctoc --notitle"},"vjsstandard":{"ignore":["dist","docs","vendor","test/dist"]},"_nodeVersion":"20.20.2","dependencies":{"three":"0.183.2","global":"^4.4.0","video.js":"^6 || ^7","@babel/runtime":"^7.14.5","webvr-polyfill":"0.10.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"sass":"^1.34.1","karma":"^6.3.4","sinon":"^7.2.2","rollup":"^2.80.0","omnitone":"^1.3.0","rollup-plugin-re":"^1.0.7","videojs-standard":"^9.0.0","videojs-languages":"^2.0.0","videojs-generator-verify":"~4.0.0","@videojs/generator-helpers":"^3.0.1","videojs-generate-karma-config":"~8.0.0","videojs-generate-rollup-config":"^7.0.2"},"_npmOperationalInternal":{"tmp":"tmp/videojs-vr_3.1.4_1775620718006_0.31914640657960214","host":"s3://npm-registry-packages-npm-production"},"generator-videojs-plugin":{"version":"7.7.3"}},"3.2.0":{"name":"@blaineam/videojs-vr","version":"3.2.0","keywords":["videojs","videojs-plugin"],"author":{"name":"Blaine Miller"},"license":"MIT","_id":"@blaineam/videojs-vr@3.2.0","maintainers":[{"name":"blaineam","email":"blaine@wemiller.com"}],"homepage":"https://github.com/blaineam/videojs-vr#readme","bugs":{"url":"https://github.com/blaineam/videojs-vr/issues"},"dist":{"shasum":"200ca3388bd51ae9ec2c73783b2c00e19c96958f","tarball":"https://registry.npmjs.org/@blaineam/videojs-vr/-/videojs-vr-3.2.0.tgz","fileCount":27,"integrity":"sha512-FwuI+6QtZKfPSBswYvChnm4OOjPVgo6KUeQYUQZmW3ekYqJJqKw/rkV6bESgGxHKGjQv/NMGlP0jQZ4DBsi/kg==","signatures":[{"sig":"MEUCIG56A6FUvhDTXXXVcmhPKTJPqzwPHmo5wHLJrUml5WtTAiEAxiGW1sWnrX0imrYtgaqbX94zpasAdCoHpwLmitkbevg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blaineam%2fvideojs-vr@3.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6159440},"main":"dist/videojs-vr.cjs.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"module":"dist/videojs-vr.es.js","gitHead":"2450f67b6bffbaa938e56cbb30d66e17c1ef08d7","scripts":{"lint":"vjsstandard","test":"npm run build-test && karma start scripts/karma.conf.js","build":"npm-run-all -s clean -p build:*","clean":"shx rm -rf ./dist ./test/dist && shx mkdir -p ./dist ./test/dist","start":"npm-run-all -p server watch","watch":"npm-run-all -p watch:*","server":"karma start scripts/karma.conf.js --singleRun=false --auto-watch","netlify":"npm run build && node scripts/netlify.js","version":"is-prerelease || npm run update-changelog && git add CHANGELOG.md","build:js":"rollup -c scripts/rollup.config.js","posttest":"shx cat test/dist/coverage/text.txt","watch:js":"npm run build:js -- -w","build:css":"sass --no-source-map src/plugin.scss dist/videojs-vr.css","watch:css":"npm run build:css -- -w","build-prod":"cross-env-shell NO_TEST_BUNDLE=1 'npm run build'","build-test":"cross-env-shell TEST_BUNDLE_ONLY=1 'npm run build'","build:lang":"vjslang --dir dist/lang","prepublishOnly":"npm-run-all build-prod && vjsverify --skip-require --verbose --skip-syntax","update-changelog":"conventional-changelog -p videojs -i CHANGELOG.md -s"},"_npmUser":{"name":"blaineam","email":"blaine@wemiller.com"},"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","micromatch":">=4.0.8","underscore":">=1.13.8","trim-newlines":">=4.0.0","serialize-javascript":">=6.0.2"},"repository":{"url":"git+https://github.com/blaineam/videojs-vr.git","type":"git"},"_npmVersion":"10.8.2","description":"A plugin to add 360, 180, and VR video support to video.js with full WebXR support, VR HUD controls, and in-VR media gallery.","directories":{},"lint-staged":{"*.js":"vjsstandard --fix","README.md":"doctoc --notitle"},"vjsstandard":{"ignore":["dist","docs","vendor","test/dist"]},"_nodeVersion":"20.20.2","dependencies":{"three":"0.183.2","global":"^4.4.0","video.js":"^6 || ^7","@babel/runtime":"^7.14.5","webvr-polyfill":"0.10.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"sass":"^1.34.1","karma":"^6.3.4","sinon":"^7.2.2","rollup":"^2.80.0","omnitone":"^1.3.0","rollup-plugin-re":"^1.0.7","videojs-standard":"^9.0.0","videojs-languages":"^2.0.0","videojs-generator-verify":"~4.0.0","@videojs/generator-helpers":"^3.0.1","videojs-generate-karma-config":"~8.0.0","videojs-generate-rollup-config":"^7.0.2"},"_npmOperationalInternal":{"tmp":"tmp/videojs-vr_3.2.0_1777799594939_0.420449880597618","host":"s3://npm-registry-packages-npm-production"},"generator-videojs-plugin":{"version":"7.7.3"}},"3.3.0":{"name":"@blaineam/videojs-vr","version":"3.3.0","description":"A plugin to add 360, 180, and VR video support to video.js with full WebXR support, VR HUD controls, and in-VR media gallery.","author":{"name":"Blaine Miller"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/blaineam/videojs-vr.git"},"publishConfig":{"access":"public"},"main":"dist/videojs-vr.cjs.js","module":"dist/videojs-vr.es.js","generator-videojs-plugin":{"version":"7.7.3"},"scripts":{"netlify":"npm run build && node scripts/netlify.js","build-test":"cross-env-shell TEST_BUNDLE_ONLY=1 'npm run build'","build-prod":"cross-env-shell NO_TEST_BUNDLE=1 'npm run build'","build":"npm-run-all -s clean -p build:*","build:js":"rollup -c scripts/rollup.config.js","build:css":"sass --no-source-map src/plugin.scss dist/videojs-vr.css","build:lang":"vjslang --dir dist/lang","clean":"shx rm -rf ./dist ./test/dist && shx mkdir -p ./dist ./test/dist","lint":"vjsstandard","prepublishOnly":"npm-run-all build-prod && vjsverify --skip-require --verbose --skip-syntax","start":"npm-run-all -p server watch","server":"karma start scripts/karma.conf.js --singleRun=false --auto-watch","test":"npm run build-test && karma start scripts/karma.conf.js","posttest":"shx cat test/dist/coverage/text.txt","version":"is-prerelease || npm run update-changelog && git add CHANGELOG.md","update-changelog":"conventional-changelog -p videojs -i CHANGELOG.md -s","watch":"npm-run-all -p watch:*","watch:js":"npm run build:js -- -w","watch:css":"npm run build:css -- -w"},"keywords":["videojs","videojs-plugin"],"vjsstandard":{"ignore":["dist","docs","vendor","test/dist"]},"dependencies":{"@babel/runtime":"^7.14.5","global":"^4.4.0","three":"0.183.2","video.js":"^6 || ^7","webvr-polyfill":"0.10.12"},"devDependencies":{"@videojs/generator-helpers":"^3.0.1","karma":"^6.3.4","omnitone":"^1.3.0","rollup":"^2.80.0","rollup-plugin-re":"^1.0.7","sass":"^1.34.1","sinon":"^7.2.2","videojs-generate-karma-config":"~8.0.0","videojs-generate-rollup-config":"^7.0.2","videojs-generator-verify":"~4.0.0","videojs-languages":"^2.0.0","videojs-standard":"^9.0.0"},"overrides":{"braces":">=3.0.3","serialize-javascript":">=6.0.2","underscore":">=1.13.8","trim-newlines":">=4.0.0","tmp":">=0.2.4","micromatch":">=4.0.8"},"lint-staged":{"*.js":"vjsstandard --fix","README.md":"doctoc --notitle"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"_id":"@blaineam/videojs-vr@3.3.0","gitHead":"c56a4cfe9a047c21a3a9433c079f94710f1fe335","bugs":{"url":"https://github.com/blaineam/videojs-vr/issues"},"homepage":"https://github.com/blaineam/videojs-vr#readme","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-qa73wlk3YuBGfQIg/VxDa+V+MNdX3kqHKNnJu+nopBfZkmZG8ikEgeRxkGi7F6prBwe/fx9fDDPdHX9jwEUJcg==","shasum":"f18d496be0e3a7edd985a67ccd416bf3cf7854d5","tarball":"https://registry.npmjs.org/@blaineam/videojs-vr/-/videojs-vr-3.3.0.tgz","fileCount":27,"unpackedSize":6185208,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@blaineam%2fvideojs-vr@3.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICpbAEI2aggCM3vK5npXwZs7ZRj/Jgrb/5s7ssU/zJ/sAiEA7O3bkVfXjssjbH0fC3v8VONwzdOU3Zzi0whVr97w8TI="}]},"_npmUser":{"name":"blaineam","email":"blaine@wemiller.com"},"directories":{},"maintainers":[{"name":"blaineam","email":"blaine@wemiller.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/videojs-vr_3.3.0_1777833740221_0.29115799876013293"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-23T01:08:34.116Z","modified":"2026-05-03T18:42:20.633Z","3.0.0":"2025-12-23T01:08:34.481Z","3.1.0":"2026-01-05T04:08:12.021Z","3.1.1":"2026-01-06T06:43:19.826Z","3.1.3":"2026-04-06T22:36:25.287Z","3.1.4":"2026-04-08T03:58:38.188Z","3.2.0":"2026-05-03T09:13:15.143Z","3.3.0":"2026-05-03T18:42:20.389Z"},"bugs":{"url":"https://github.com/blaineam/videojs-vr/issues"},"author":{"name":"Blaine Miller"},"license":"MIT","homepage":"https://github.com/blaineam/videojs-vr#readme","keywords":["videojs","videojs-plugin"],"repository":{"type":"git","url":"git+https://github.com/blaineam/videojs-vr.git"},"description":"A plugin to add 360, 180, and VR video support to video.js with full WebXR support, VR HUD controls, and in-VR media gallery.","maintainers":[{"name":"blaineam","email":"blaine@wemiller.com"}],"readme":"# videojs-vr\n\nA video.js plugin that turns a video element into a HTML5 Panoramic 360 video player. Project video onto different shapes with full WebXR support for immersive VR viewing on devices like Meta Quest, HTC Vive, and other WebXR-compatible headsets.\n\n**Maintainer:** Blaine Miller\n\n**PRs Welcome!** Contributions, bug reports, and feature requests are encouraged.\n\n## Installation\n\n```sh\nnpm install @blaineam/videojs-vr\n```\n\n## Features\n\n- **Full WebXR Support**: Modern WebXR API support for immersive VR experiences on Quest, Vive, and other headsets\n- **Multiple Projections**: Support for 360, 180, side-by-side (SBS), equi-angular cubemap (EAC), and equidistant fisheye (180°/200°/220°/360° with mono and LR stereo variants)\n- **Glassmorphic VR UI**: Beautiful frosted-glass design with translucent panels and subtle gradients for an immersive, non-intrusive interface\n- **VR HUD Controls**: In-VR user interface with scrub bar, play/pause, and navigation controls\n- **VR Gallery Panel**: Browse and select media while in VR mode with scrollable thumbnails and pill-shaped duration badges\n- **Controller Support**: Full VR controller interaction with pointer rays and grip toggle\n- **Orientation Controls**: Adjust viewing angle for comfortable viewing in any position\n- **Stereo 3D Support**: Proper left/right eye rendering for stereoscopic content\n\n## Browser Support\n\nThe most recent versions of:\n\n### Desktop\n- Chrome\n- Firefox\n- Safari\n\n### Mobile\n- Chrome on Android\n- Safari on iOS\n\n### VR Headsets (WebXR)\n- Meta Quest (Quest 2, Quest 3, Quest Pro)\n- HTC Vive / Vive Pro\n- Valve Index\n- Windows Mixed Reality headsets\n- Any WebXR-compatible device\n\n## Quick Start\n\n### Script Tag\n\n```html\n<script src=\"//path/to/video.min.js\"></script>\n<script src=\"//path/to/videojs-vr.min.js\"></script>\n<script>\n  var player = videojs('my-video');\n\n  player.vr({\n    projection: '360',\n    enableVRHUD: true,\n    enableVRGallery: true\n  });\n</script>\n```\n\n### ES Modules / Bundlers\n\n```js\nimport videojs from 'video.js';\nimport '@blaineam/videojs-vr';\n\nconst player = videojs('my-video');\n\nplayer.vr({\n  projection: '360',\n  enableVRHUD: true,\n  enableVRGallery: true,\n  onNext: () => console.log('Next video'),\n  onPrevious: () => console.log('Previous video'),\n  onFavorite: () => console.log('Toggle favorite')\n});\n```\n\n## Projection Types\n\n### Standard Projections\n\n| Projection | Description |\n|------------|-------------|\n| `'360'` / `'Sphere'` / `'equirectangular'` | Full 360-degree spherical video |\n| `'180'` | 180-degree half sphere video |\n| `'180_MONO'` | Monoscopic 180-degree video |\n| `'Cube'` / `'360_CUBE'` | 360-degree cube map video |\n| `'NONE'` | Standard flat video (no VR projection) |\n| `'AUTO'` | Automatically detect from `player.mediainfo.projection` |\n\n### Side-by-Side (Stereoscopic) Projections\n\nSide-by-side video contains separate left and right eye views packed into a single video frame. The plugin automatically separates these for proper stereoscopic viewing in VR headsets.\n\n| Projection | Description |\n|------------|-------------|\n| `'360_LR'` | 360-degree with left/right eye side-by-side |\n| `'360_TB'` | 360-degree with top/bottom eye layout |\n| `'180_LR'` | 180-degree with left/right eye side-by-side |\n| `'SBS_MONO'` | Flat screen side-by-side - shows stereo 3D in WebXR, mono in browser |\n\n### Equi-Angular Cubemap (EAC)\n\n| Projection | Description |\n|------------|-------------|\n| `'EAC'` | YouTube's equi-angular cubemap format |\n| `'EAC_LR'` | EAC with left/right eye side-by-side |\n\n### Fisheye Projections (since 3.2.0)\n\nFisheye sources are circular images shot through a wide-angle lens. The plugin reprojects the disc onto a sphere with a custom shader, so the camera can look around naturally inside the captured field of view. Fragments outside the disc are discarded so the letterbox stays clean.\n\n| Projection | Description |\n|------------|-------------|\n| `'FISHEYE_180'` | Single 180° fisheye disc, mono |\n| `'FISHEYE_200'` | Single 200° fisheye disc, mono (covers MKX200-style lenses) |\n| `'FISHEYE_220'` | Single 220° fisheye disc, mono (VRCA220, etc.) |\n| `'FISHEYE_360'` | Dual fisheye 360° — front hemisphere on the left half of the texture, back hemisphere on the right half (Ricoh Theta-style raw) |\n| `'FISHEYE_180_LR'` | 180° fisheye with left/right eye side-by-side (each half is a full disc per eye) |\n| `'FISHEYE_200_LR'` | 200° fisheye, LR stereo |\n| `'FISHEYE_220_LR'` | 220° fisheye, LR stereo |\n| `'FISHEYE_360_LR'` | Stereoscopic dual fisheye 360° |\n\nLR variants render the left eye on Three.js layers `0` and `1` and the right eye on layer `2` only. WebXR routes per-eye rendering through layers 1 and 2 for true stereo, while non-XR (flat browser) viewers see just the left eye instead of a black scene.\n\n## WebXR VR Mode\n\nWhen viewing in a WebXR-compatible browser (like Meta Quest Browser), the plugin provides an immersive VR experience:\n\n1. Click the **Cardboard/VR button** in the player controls to enter VR mode\n2. **Squeeze the grip** on your VR controller to show/hide the VR HUD\n3. Use the **thumbstick** to:\n   - Left/Right: Seek through the video\n   - Up/Down: Scroll through the gallery (when open)\n4. **Point and click** with your controller to interact with buttons\n5. Press **A button** on controller to toggle play/pause\n\n### VR HUD Controls\n\nThe VR HUD provides these controls while in VR mode:\n\n| Button | Function |\n|--------|----------|\n| **Exit (X)** | Exit VR mode |\n| **Gallery** | Open the media gallery panel |\n| **Previous** | Go to previous media item |\n| **Play/Pause** | Toggle video playback |\n| **Next** | Go to next media item |\n| **Reset Orientation** | Reset view to default orientation |\n| **Drag Handle** | Drag to adjust viewing angle (for lying down, etc.) |\n| **Projection** | Open projection mode selector |\n| **Favorite** | Toggle favorite status (if callback provided) |\n\nThe HUD also includes a **scrub bar** showing current playback position with a draggable handle for seeking.\n\n## VR Gallery Panel\n\nThe VR Gallery allows users to browse and select media while remaining in VR:\n\n```js\nplayer.vr({\n  projection: '360',\n  enableVRGallery: true,\n  mediaItems: [\n    {\n      title: 'Beach Sunset',\n      thumbnail: '/thumbnails/beach.jpg',\n      url: '/videos/beach-360.mp4',\n      duration: 180 // seconds (optional)\n    },\n    {\n      title: 'Mountain View',\n      thumbnail: '/thumbnails/mountain.jpg',\n      url: '/videos/mountain-360.mp4',\n      duration: 240\n    }\n  ],\n  onMediaSelect: (item, index) => {\n    // Handle media selection\n    player.src({ src: item.url, type: 'video/mp4' });\n  }\n});\n```\n\n### Gallery Features\n\n- **Scrollable Grid**: 4-column thumbnail grid with smooth scrolling\n- **Lazy Loading**: Thumbnails load as they become visible\n- **VR Controller Support**: Point and click to select, use thumbstick to scroll\n- **Mouse/Touch Support**: Works in non-VR mode too\n- **Duration Badges**: Shows video duration on thumbnails\n\n### Dynamic Gallery Updates\n\n```js\n// Update gallery items at runtime\nplayer.vr().setGalleryItems([\n  { title: 'New Video', thumbnail: '/thumb.jpg', url: '/video.mp4' }\n]);\n\n// Show/hide gallery programmatically\nplayer.vr().showGallery();\nplayer.vr().hideGallery();\nplayer.vr().toggleGallery();\n```\n\n## API Reference\n\n### Options\n\n```js\nplayer.vr({\n  // Projection mode\n  projection: '360',           // See projection types above\n  sphereDetail: 32,            // Sphere mesh detail (higher = smoother)\n\n  // VR HUD options\n  enableVRHUD: true,           // Enable in-VR controls\n  enableVRGallery: true,       // Enable in-VR media gallery\n  showHUDOnStart: true,        // Show HUD when entering VR\n  hudAutoHideDelay: 5000,      // Auto-hide HUD after ms (0 to disable)\n  hudDistance: 1.5,            // Distance of HUD from viewer\n  hudHeight: 1.5,              // Height of HUD\n  hudScale: 0.015,             // Scale of HUD elements\n\n  // Behavior options\n  forceCardboard: false,       // Force cardboard button on all devices\n  motionControls: true,        // Enable gyroscope/device orientation\n  disableTogglePlay: false,    // Disable click-to-play\n\n  // Spatial audio (requires Omnitone library)\n  omnitone: null,              // Pass Omnitone library object\n  omnitoneOptions: {},         // Omnitone configuration\n\n  // Media gallery items\n  mediaItems: [],              // Array of media items for gallery\n\n  // Callbacks\n  onNext: () => {},            // Called when next button pressed\n  onPrevious: () => {},        // Called when previous button pressed\n  onMediaSelect: (item, index) => {}, // Called when gallery item selected\n  onGallery: () => {},         // Called when gallery button pressed\n  onExit: () => {},            // Called when exit VR pressed\n  onProjectionChange: (projection) => {}, // Called when projection changed\n  onFavorite: () => {}         // Called when favorite button pressed (enables button)\n});\n```\n\n### Methods\n\n```js\nconst vr = player.vr();\n\n// Projection\nvr.setProjection('360_LR');    // Change projection mode\n\n// VR HUD\nvr.showHUD();                  // Show the VR HUD\nvr.hideHUD();                  // Hide the VR HUD\nvr.toggleHUD();                // Toggle HUD visibility\n\n// VR Gallery\nvr.showGallery();              // Show the gallery panel\nvr.hideGallery();              // Hide the gallery panel\nvr.toggleGallery();            // Toggle gallery visibility\nvr.setGalleryItems(items);     // Update gallery media items\n\n// Favorite state\nvr.setFavoriteState(true);     // Set favorite button state\nvr.getFavoriteState();         // Get current favorite state\n\n// Orientation\nvr.setOrientationOffset({ x: 0.5, y: 0, z: 0 }); // Tilt view\nvr.resetOrientationOffset();   // Reset to default orientation\nvr.recenter();                 // Recenter VR view\n\n// Status\nvr.isPresenting();             // Check if currently in VR mode\n\n// Three.js access\nvr.camera;                     // THREE.PerspectiveCamera\nvr.scene;                      // THREE.Scene\nvr.renderer;                   // THREE.WebGLRenderer\nvr.cameraVector;               // Camera direction vector\n```\n\n### Events\n\n```js\n// VR-specific events\nplayer.on('vr-next', () => {});\nplayer.on('vr-previous', () => {});\nplayer.on('vr-gallery', () => {});\nplayer.on('vr-exit', () => {});\nplayer.on('vr-favorite', () => {});\nplayer.on('vr-media-select', (e, { item, index }) => {});\nplayer.on('vr-projection-change', (e, { projection }) => {});\nplayer.on('vr-orientation-change', (e, euler) => {});\nplayer.on('initialized', () => {});\n```\n\n## Custom Buttons\n\nThe favorite button is an example of how custom functionality can be added. When the `onFavorite` callback is provided, the favorite button appears in the VR HUD:\n\n```js\nplayer.vr({\n  projection: '360',\n  onFavorite: () => {\n    const isFavorited = !player.vr().getFavoriteState();\n    player.vr().setFavoriteState(isFavorited);\n\n    // Save to your backend\n    saveFavoriteStatus(currentVideoId, isFavorited);\n  }\n});\n\n// Update favorite state when loading a new video\nplayer.on('loadedmetadata', () => {\n  const isFavorited = checkIfFavorited(currentVideoId);\n  player.vr().setFavoriteState(isFavorited);\n});\n```\n\n## Per-Source Projection\n\nSet projection on a source-by-source basis using `player.mediainfo`:\n\n```js\nplayer.mediainfo = {\n  projection: '360_LR'  // This video is side-by-side 360\n};\n\nplayer.vr({ projection: 'AUTO' }); // Will use mediainfo.projection\n```\n\n## Accessing Three.js Objects\n\nFor advanced customization, Three.js objects are exposed:\n\n```js\nconst vr = player.vr();\n\n// Add custom objects to the scene\nconst geometry = new THREE.BoxGeometry(1, 1, 1);\nconst material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });\nconst cube = new THREE.Mesh(geometry, material);\ncube.position.set(0, 0, -5);\nvr.scene.add(cube);\n\n// Access camera for custom positioning\nconsole.log(vr.camera.position);\nconsole.log(vr.cameraVector); // Direction camera is facing\n```\n\n## Caveats\n\n- HLS captions on Safari will not be visible as they are located inside the shadowRoot in the video element\n- Some older mobile browsers may have limited WebXR support\n- CORS headers are required for cross-origin video sources\n\n## Development\n\n```sh\n# Install dependencies\nnpm install\n\n# Start development server\nnpm start\n\n# Run tests\nnpm test\n\n# Build for production\nnpm run build-prod\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}