{"_id":"@goodgamestudios/cxf-fullscreen","_rev":"133-cd9937ede453b64452f2ff08d4cf2999","name":"@goodgamestudios/cxf-fullscreen","dist-tags":{"prerelease":"0.0.2-0","latest":"0.0.4","qa":"0.0.7-qa.8","production":"0.0.7"},"versions":{"0.0.2-0":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.2-0","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.2-0","maintainers":[{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"1193894369d1cb5c4ffd954d767c3ff45d3e98f9","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.2-0.tgz","fileCount":7,"integrity":"sha512-ZFM2L41hLfFq3Lee4yQUMnqZOgASuk4TNuNJR/bkvspHiawtDC7vaFeWEDmKN5g6dexAjsVdut256ACZzBzFgg==","signatures":[{"sig":"MEUCIQDBqlxBIlKT5uqDcf6qxLm/yPS+gqyHX2ZfUIujObT5YAIgMp+SGfZmkixC13Weqg68dx506F4prGV7xQfk7XO5xOY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQwbNCRA9TVsSAnZWagAAWkUP+wbifP6jtlAQ8VlZKKCI\nomT9inSJ3dyNETCPl8vUwLVJgldPdqIfzXB5P1LsjXJ5fcc6iUzxIMBUNU9J\nC4i47Ouu2BddUBnOo1jjTufd3VsQ3aKS8SQv3oXJgG3Uk684W2m7XuvQsV08\nQJyi3EIyNpEESSjJI99ghUrHRDqdink4fcBcl2FxzWBkUNX2uGGmsICUesrN\nx3zY/yBl1FwDhEcjnHU7a7xNm45sjeMfimUcQECXt3vKekta9673WaavhRw8\no2x3m9ct8wMb/9yK0xa5ktvLDWOOVyIPEMAco/amO3bT69GX9moLw4hgNJBm\nFs1Kv3meHF+SM1EUqCqdJZDpkx2WqRaSZWnZF4hCe4BIa5zsMrMM6Tr6AOcT\nZhZNa6etDKyaropEyqeqSGxVc7B45u9dvLmDEbsBCl1IrWPtCJ/aPuM6Ib2m\nP0yBnVGscWI1khvym5U1ImgxGXBqRJQyClZ470jr1//BVhNbflKxjh4UXCkv\nDwfEZ4Ihdx2oUq2OGB7dyJk1jTWmNQIy3EEB8yuNwI66x9PGb7+r6P379GhU\nA4r5+EYlasheMeWM7agYpZhxA3JcHMknsBxXyJzrRuXXqfwWATtkcG+kv5wp\nsm+I9+TINfw4ETwEFg4eS3kh6Jh3jWq4xzW5PAtwxXv+0EjAn7TwT/maZ+gx\nS1HU\r\n=2Qd5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"4d2b14028dfa5d8cbbfe56ee21a371a2ccc75f9c","scripts":{"test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","pretest":"xo","release":"standard-version","prebuild":"npm test","prerelease":"npm run build"},"_npmUser":{"name":"andreaspizsa","email":"hopster@gmail.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.10.0","browser-env":{"jsdom":{"userAgent":"My User Agent"},"globals":["window","document"]},"description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.4.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","setup-browser-env":"^0.2.2","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.2-0_1564673740753_0.8255651880172574","host":"s3://npm-registry-packages"}},"0.0.2-qa.0":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.2-qa.0","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.2-qa.0","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"c86755de3e3e003538fcab41ea702c08c6a2c125","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.2-qa.0.tgz","fileCount":7,"integrity":"sha512-grTr7JuJRsEPm5XvXmVqBnnEfNBTQTxYmyZMNduHm1z8RXdBVoQOag9h18U/u07HTB+x/mDeG0U9J6dhKFxNxw==","signatures":[{"sig":"MEYCIQDF/6XwnhTfeHNpCQYXWziSiv3GE6YHIa6jeD7080a4wgIhAN2K0VpJ2AZS06UkLhrRN/z3Fket33iAj/AysfaNjvDq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9106,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTDRYCRA9TVsSAnZWagAADCoP/Rc9YccWsG+dhFoHGpGM\nE06zJiRR0/6aiNN6qoiXx0ARPQRpAc4YHDVj0kb8nFQS1XdBqz21GpIYYC1R\nh0Flr/mIaf7j9JalCUcd5J3FJGZp3PlGbog/k+zGj5LLbbUU7U2pe2BFX5mf\nmYOIdeR26KtyHlqMMjVpz/M2TxiuLGWVvss19I3UEogbzkOz/T3uxl5W2z80\nRJG9xydFop50OcaJmSMgDCJ5lHHzjuPvgTYDhWPNdhkHD45JcsmIcfFxB+g2\ncew9UtuKJh8U63DmTb/rg+luIlfYEVe9tgby1Pm1l0SukeBA+519yADDjUPs\nIIFix+gi0/OnEy8hgCA46YZZZQlV6lzpL9w08P9C21SZaDuJR1rNYYneON9i\n3misYMlDpQRx5b75GGQ7Cp5VAu8EsDlGasTr095dq15sIgH1MDy62jGaQmWk\nQ3dMIw1P3J1H0NSa+mwH0H3W4qDbPHwLJrtC/QoB2FlXoD1dMtcvnRmhoHwL\nnrmmTAFJfH1sTfclsxi0naDpNOJmjstZ2wEzDjGOvnfisdwjWBO8DIqZaEw3\nCfFIhJqqnLe2Kx3sHzKZDkhQy4ioRNS/WRYXOEXGooJ3NM2nwyLRXQQwiIpt\ncKqyCOYNVp7Ssn+uMU+loPB8a/2NH0BkXerzvkkotxv5em+H598yB2zI61fc\nxTJ/\r\n=Je1D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"51d22d10a3e6a2e47e2d6eb0c2cdd9be8cb0e1a0","scripts":{"test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","GO-LIVE":"npm run build && npm run deploy:production","QA-TEST":"npm run build && npm run deploy:qa","pretest":"xo","release":"standard-version","prebuild":"npm test","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","prerelease":"npm run build","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"5.6.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"9.9.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.2-qa.0_1565275224372_0.7368594144664466","host":"s3://npm-registry-packages"}},"0.0.2-qa.1":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.2-qa.1","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.2-qa.1","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"e395669c94b871d48fe1e8c2805d60229a2e3a6a","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.2-qa.1.tgz","fileCount":7,"integrity":"sha512-bV97SYidZfjH/VquAEeT7VfccN1k0MVTpa6M5mw1jca5fIITEhxb95UeYqOyDFjn010oz2fgk0GjAPKRi3Tzow==","signatures":[{"sig":"MEYCIQCPR1/Ww527bxO0My+Fy1LSrTIPMDkqWyBKtG23o3w+kAIhAJL3p7+MK0/Tm9dUGkT/grdyTf7JqrdyBof0J1vASojW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTDybCRA9TVsSAnZWagAAn0cP/0xO8mAisTbtB8zwArb8\nDdIGk2rOw+t9B+1eaXcDX8B2IZacAaFTcIvuMWD1MKE0EmiRbpaafM+cfU5q\nfY+OS7AfGJlntX4B2iTOpZilg4VURNJjt8v4XoH+5VQQudp67Xl6DtfEXVqa\nIOAASlj0aiRGyKViBulAX4GJ/OFufC6tVzidD57BIntUby9M0qFTmHwogzKO\nDLWZ+KkGVZhhfWWmrA5SwNCQnYIiDQ/ewToFwddzpzvgjA3OP9SsAqM/atyz\nXp8SuDc5mA0SWLy/3RC0yjLs21r/i8CC99o/vc22eeLBEReCbvn7BcMeIeoL\na7MMrKcS2hHoPKiCdOc4oMopWmuTA/Iw3dYitHK8jG+KYgRy+KNodr2dtYAD\ndbHmTYFjNMY96No/S8GNeICtkZjxJJnU+ddyg1k+p6x2askXjKTszFs1H7Rn\nFQrlXS4BwI8myLinBoBtwkTgj27YyfrLjDEzyZWBOKS3JISWMmVxbFyNplYH\nTUTdzRFSOmsSP/GTjgdTrY+vB9O85XEhek2FVIojet2SCEw9hHZZutO0FlrN\nIsk7V4JL4apVOi9GUEzWJ9kS4OsSnUuqDBcj1yRkovHVeEEkdTSIHPh1fpPX\nGscbqGlq0W8uOw3Ido2Mky1lNs8LtQsWTGcwNw9h/QsYnlQUbEIIzxLNN2Zk\nmwH4\r\n=WCJu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"2715e1d8fead0173aac1ec4977787aa035a90f5e","scripts":{"test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","GO-LIVE":"npm run build && npm run deploy:production","QA-TEST":"npm run build && npm run deploy:qa","pretest":"xo","release":"standard-version","prebuild":"npm test","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","prerelease":"npm run build","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"5.6.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"9.9.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.2-qa.1_1565277338520_0.7912063517057641","host":"s3://npm-registry-packages"}},"0.0.2-qa.2":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.2-qa.2","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.2-qa.2","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"5c15bb5bce114b174a7803ab5693bb748be54310","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.2-qa.2.tgz","fileCount":7,"integrity":"sha512-g4uQFlvK/g5Z6dAtNgBozM1TBn+fUgI2bFTa8ziHmPr4B0+ZVsvvjdMmR01GoftSDe7WVSLRhrlcDXcT+D5DXA==","signatures":[{"sig":"MEUCIGJACwX7jf6H6IcgoyrfnYhDjkIIDHbCxI/TPvvH42MZAiEAsQqZFWn0V1blxxtDRazMje2CUt9Gs0rxEbSOL7U7Dgc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10298,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTTacCRA9TVsSAnZWagAAWk4P/1Hc+bsy3+ojCwPqktLq\nUqOqTkQCGQwtFdD/sBoE1rE3xK1vDp0zsUNL5iDD1oMWjrn02y33fhUk0uw7\nllETmyPV62iUryE6w92p/Oi+G0cXc17HoR0OiyGRLvTQAo1/PYQ9jntHjBrb\nOuSalMf3gXmSQzbRfxzstbV9franh4oKgELtlmwq7r+5vXsew3rjZGwSlEHf\nz0xavss0qWp/OddkDK5k2Nz5eEQE1woCbL2pee/vUkZ3IdGhrqCZ7PCvEUlv\nq+pztW73oKwSd5dgUdUrQ+8aNTgCXt2F10K3Wma8RJSSwzne51CTafFkXABq\ndszJzj/P+iPUc+4b41tjeNx1aZV46lPkTE9+pQm3qVXz5TMiHkcMqCaIzO6X\nmQgkhai5YBDBHT/a4viL82mGbROdZPCCRx4FuBgUY8N30KBBF4STgzdQnWkM\nROcBDYBUYxjQZ5U1AB3m2eXCLF3MBJUCOzg5Xct7n07GAa4SGihxTSbhYb8E\nrI3bU2wmlVg9CTrItKYgboT+nNE7MPjSaMi8aQuVksar75lEn3TIGnoJSvIM\nFqK2hJ3Roc43jN65BiqUpMhW/z6OXxXSMVcMNU8ISKYE1EGe1oAmKeQQBUrE\nRBSqWcxd++GJVOCdAGz2dWqfKqxiNp67vd2GOtjKOvQOauuFGS///jqbloxD\nuA9k\r\n=eObP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"16ecf1f653c302a031c7a7ef34f651ab38c1abbc","scripts":{"test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","GO-LIVE":"npm run build && npm run deploy:production","QA-TEST":"npm run build && npm run deploy:qa","pretest":"xo","release":"standard-version","prebuild":"npm test","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","prerelease":"npm run build","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"5.6.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"9.9.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.2-qa.2_1565341339617_0.6659177101463474","host":"s3://npm-registry-packages"}},"0.0.2-qa.3":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.2-qa.3","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.2-qa.3","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"fff13aeff63e1543a99024fbd2e9d464d8fb3e37","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.2-qa.3.tgz","fileCount":7,"integrity":"sha512-sR2wnHAPS2oENXQKVpLXj8fOiPEY4dVhdPn6aqJ+Fq3BS0IgepLPFYAzTA1EqGbzg2ziF8ulVrNFQXa8UONBJg==","signatures":[{"sig":"MEUCIQCkBorN+KB/ZihKJvNQJA2PMzj9KJhunhDULOG0tdmMEAIgV2lEFVea4gzl/3c/pxxRzRmDtMtPpJKonAYBXUuWpoM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTT5+CRA9TVsSAnZWagAAJCgP/1Jlg7pVmSGFmm2c/hCT\nrs+c8+GoAW6cHFLRYA7JJMrLEKGpTAyxjRADjzs8CrcbEryeoGmV4JHNa1RL\ncpQKeyK7o4rdX6ICYCe9j/ZanXQeLZe4Bp3sQ0kAKiWxE3pdX71DpmA2bCEJ\nCRyIAS9isEK98zhc5hmILhsQ8b6x5am5uu6kCqDLaxbGVrAQTf6Yt8nkV4ur\ncB5VqL3GzxQ4qaIP4E8wJ2+FQV1ibo2UnyD0yYp1/Fzsbzk24sGmLkqupARb\nrAJCfDENEEF3IyYAAWsIlmK5r+nIfSn4wWRv1XSKrmHJAQxPBOvSzSlCBDoL\nkcoV+agRbvvH54Hl7n0HJfkjxC5qtHrxkxnWx2W6Fc0fha7ox+eqVHUa1cD/\n0FJudy5niNvXmhmSTbcrDj9RmEJEcUD23ip9S5qutXnwaQpB+hLUZ45FgTKM\n1cZlmKNNJIYcQBJX1QmMfC749y8QiwUR/ZqiYfCxdM9XAETHyUwb4ymq2t6h\nNwstN7sRLPK/snfZRWEYyf07AS0x40q1Mb7IKm20ItPWJ0r6qp1vpetI6gMi\nlPWTV8uiOdjO/4f/Lz2Pg6BwFAa2ftYN4RX8i8+34k99b132V8+vzznEG9Q2\nBbBhAIgt1XPiRxIssGR7u7R8lUdMPsdnb8isdqDnOWCotDfE7Smecrj/i+27\nxKCM\r\n=Rc8l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"797b5e9819393b85ece0fb8ef07bed810fc13696","scripts":{"test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","GO-LIVE":"npm run build && npm run deploy:production","QA-TEST":"npm run build && npm run deploy:qa","pretest":"xo","release":"standard-version","prebuild":"npm test","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","prerelease":"npm run build","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"5.6.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"9.9.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.2-qa.3_1565343357370_0.12493649162774023","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.2","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.2","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"dd5587cd1f9d25f529f88daffe8324e7a723441e","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.2.tgz","fileCount":7,"integrity":"sha512-lVXFB0IECDEUuamnM430P3jUYH6PxpWTklwTLSQM6YgWzIuI4dpxSWZhmw5gpQBrY7vi1y3xAPkxNzrNOPc5QA==","signatures":[{"sig":"MEUCIHEa1kMbRL8lutJ69W0I1wWNPhtT4Av7fkGEgc699TdMAiEA1+dzW85jm/XhmuK/FpRXMv9YB3xx0f3GyQGY50y40yQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10460,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTT7KCRA9TVsSAnZWagAAfRYP/A3Gu+jQasjgKONM7WBM\nBCqgmIYYt+xgtqDd/0FtPyNyf+4FbLSSgWBeImYQULHzwxU6Xt1yByY2CGxj\n3wEOUI2aFcsFy+ZzN81KD2Mthu5J0X0y6/uyjgGz6rnZfc6U66axgGUelNrO\nTrAT0izolsS4/oG/CMQlAkkZ71F7j6kBM+gObedfM+JpWVR0CgncwEm4mtlE\nPf5gmM/4ZNK0JnQpUgC0+pnU1RzIx8T5f0Zwkxe4ci9hixSRB5JKzt79sZOB\nvv+oVu5Ikq2swpfGJsggGpUdD1eqyZg0etRmvXDJN2Vpp1dP3FubOsbB0ftk\nv0muxnhOy9ucPVqq7zb/U+BIZ9zbibwKvrhWUVoZKFDQqNj0yikK0bGClhY4\n0CwAM01H1AlqeQsty2rkf0Z9U6vSvY6blRCrz+56gD3+XUskDlFLn164BK44\nuBvfoyMbsdEcYvTvlwAHno7KKHKpu2e0cIX21YlwXkHH9PGmr9s5oQ1Fn9b2\n78oPl8A04RhSplTmso3p7r9BPExg264Lh4ulfv1lQyDLNjyS0IArHOxVR+Gc\nhCaPfHVp3jpvgiXK8u9rIidMvDfY3qBEJsZLC5A7vUyTXlCvumeiLWpWywTE\nmu2aoJPbHdzOdGXma/o05txjVqVST4z5dUnd2a+PeIMWC4TuFxhCN5re055r\n5kd/\r\n=V/Ke\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"d5086edcad02eda0f612d68794b98538dec8fc22","scripts":{"test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","GO-LIVE":"npm run build && npm run deploy:production","QA-TEST":"npm run build && npm run deploy:qa","pretest":"xo","release":"standard-version","prebuild":"npm test","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","prerelease":"npm run build","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"5.6.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"9.9.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.2_1565343434037_0.6302917828937538","host":"s3://npm-registry-packages"}},"0.0.2-qa.4":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.2-qa.4","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.2-qa.4","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"f61886422c1251b93bc663401248bca9196a8b07","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.2-qa.4.tgz","fileCount":7,"integrity":"sha512-t4xgrD0KQXAHxW72ht3TmKIGXGtnG6R0WAZHDgFLfdPYJ7UysiESG5vONhV63VfCtF3owfzOAr47ELAq7fFFcw==","signatures":[{"sig":"MEYCIQDPnnSM97vd/0iR8ajrdlWrd7F0f5eeR8eyMf1a0pBU1AIhALJwtk9v4QAjopjylj6VhgwoJB04oVeFs0x0ww56U2LW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb70zCRA9TVsSAnZWagAA6aYP/Rw4OxWK+B5sgTE1MwN/\nWzXTm9bQB/fkD1wWim9SWjiTt9r4PN7D/3UfqXXKbPaZZ1QP5AxNmSw6FA53\nez2662BTx4rn9fbaRWSkqwY1SDE0rolruLtZOFxyPA9lGnBQw1qsJR7s+z0G\nGH/Z9+s8oeggJiWLMgcPEQNFyxb5OAgnrwWErqxVv4o990EgFGeNCJr2AClK\nYafyY0+78nyydQ4t/sIy6i5HYWKmJ15/30FhReicm8WaKx3fwLoMeYZjVJFB\nzKJCY2KAJThVOxzOsHt6bLkkG1m2YTmOjuMgpemsVsvHUqDW5wSff0I5iVM2\n8nXt1LANwEusPjGamoLWqKW2AQNpZsHGhBhdk9VipfegHbovCa5McVNEC/MX\nHFwQva2XAhRkjPSwcZ/NsDsapg5Fn+zPN28IfUshyfigS1/wv0QZpPuIDArC\noF3myqgcO849iDixhHtRrCoK20jI86ZuQENc09iLnCnBpa/x9+38fIV6sEsA\nP1AD39FCqfkfyTBPKuOh8xhvbtpTNYavm/2qH6h9eqpU4NBfB9jlfDu69uo3\n6Qa9kxdIzS4YGWdEawKCzyqo9/e6dDRSvs+rgssdGz7kurChTTg51dihZEpr\n9kmwLBqLaBJgRxhZ0wZ13aFCKXIDY1lWTfHyJzIZVD8joUukTTxJWhTiVTn8\nBKoi\r\n=m9OD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"5dc992a6189181c9c5cd6e132da2abd65340826e","scripts":{"test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","GO-LIVE":"npm run build && npm run deploy:production","QA-TEST":"npm run build && npm run deploy:qa","pretest":"xo","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","prerelease":"npm run build","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"5.6.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"9.9.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.2-qa.4_1567604018822_0.4624711692160126","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.3","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.3","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"c104e9183e92049d78fb2edd27d5f541fd0a9fc2","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.3.tgz","fileCount":7,"integrity":"sha512-qyB3v1iGn1dDCBPp83r0In4uA6y+LtPk/Yd4i8wjheL+29yABSO3isNG65w7YKsPkQrzOYFx+/XG2bdFiQ641A==","signatures":[{"sig":"MEUCIFWYPTufJap4Cth7asnszUfOahImlofSB4/MoPHIGGEYAiEAlZaFL9RnQORqrPtjvA2AA+FO+Z0Mdq0rmMG4DS5usmo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb71pCRA9TVsSAnZWagAAiWsP/j3pZouGuqK3gclO1CXg\nyTO5VOCovXhyFVQWq1OP3lAzQMn3bpvll9Vv3NZhPt2X4Ntob+1mlm82a6Xq\nJzHD3D+8/xp/CB5mNi7uG++380zIBCnS7duVQPdMX6WiheJAHElqFTOeacUI\nlxXjEtSAqVGePTmBmzO+cPcCcbxifdxmtxJ0xXs5/oEbGrUzSQaE+V/tL5NM\n7YSvPN5TwD7fYEONG4dNIZahAQAuQb33IltmKNS4Kw/imPqzWLBR1IeweF4r\njM17+vpdRK44v65lyRIwP5f4i3e8qPBx/eni+9xYZ37iJ8pAoqP7CzzycJaR\nV9Zvb74SmWTVRhgnDBgfTBxZWUHDdligrYGa8B2XYfEy+OdrzkyhTu507Ptr\n3VpHsDva4DSP17mEFb1/+U4KAVPYbdqfWtMjzQS7+y0PWdYMWNC7D2I24o29\ng/a16VkzJXkuWU/IrlMC8s4jO3XOGhEI6C4cddWqnLaJvDLUE5223+lWv6G+\n99ATm9Qd7CxWw+YbFSu4lCFk6ZaclIAhGBhvv6j3pNi09qtoqWjcLL+ciuNW\nfznDoLrTCdTJvGIb/b1sDEEFY9udpPky3MuZBh+f6iXoq7y/85ob/jubQFGj\naS9oH/vgCD6GFzog2CQL4fVv1AiTLbtYuuXVDkXW1TNk+0NZ6c03LrkGu0ED\nipfY\r\n=Rw/f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"9acd6eed44496b570e6bce9daee8eac9a6c8e0d2","scripts":{"test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","GO-LIVE":"npm run build && npm run deploy:production","QA-TEST":"npm run build && npm run deploy:qa","pretest":"xo","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","prerelease":"npm run build","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"5.6.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"9.9.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.3_1567604072811_0.6414170260831389","host":"s3://npm-registry-packages"}},"0.0.4-qa.0":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.0","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.0","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"55bc467bb1721f93a4a96cfb2b4a2987bb332c28","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.0.tgz","fileCount":7,"integrity":"sha512-cH5zyjHk+O2nGG05crGiB5TuMO7UCuKhzAfwwz/ppBc4KxVtNoTHOto5ebEzYjlKC8cKUxiWpN5fA++jUmUfJg==","signatures":[{"sig":"MEUCIQD28M9Wpj2wOI90Y098cBia0XUTG/k6vKhOSgooclBmTQIgVsiIt8aSb5vzVPCsyT9/tLP8ObV4mgxcbZpK5OqtA9M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11558,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf1Z7CRA9TVsSAnZWagAARNUP/RR6PtZx6enQJbXA9+hI\n3600Z6zesiBrw7zlqVtYicAvyVFNsz05pLFItyfMzA6nlIPin0P3FqVKrwLP\nNYZcq95tXbGAf1IMJDVQl0p3RBNIK8cZnEUBQqooruJpfetUARqORdBMcAxF\nsIt5xbfXqBGCC2RoUl5zQMLBAw4U2aajzAAPRF4U17dqiFyhgVBBWpBk36lB\nSdEd0ULGNcIer49ERh/EJiwrGuwsJzhQzHi5n0hYXWg5/UX3hS4PPp/DB0nz\nMSF/hKOgdUw7eITlTjtgzAS8iL+XVKI4efEw1CS6iW1xfqUC7O43RyTIEX+q\nbKbs6Xxtv2CHz1Ykic7MC2nKH9XrhscI5FfEVvlGTeeV6bnT+NvcDnq63f0R\n+OUbuwVYHk2I7T74AyvWB3DO4p4qDkah7Wt/mpecTjeeNic3u2ICTvvo2LSz\nmr50KcJI9RbF2ywrzgNxGv8bCZSNvLzlPASWyR4P+QMGt/cdQ97OGH3nR4Lj\nFx6eLD/4+NzWteVl+3Ymyeko7omfKNCb6NYSXFhIP5PqflWHY09XqKvbAgK4\nxlZgTaCiVvNDBBehoWReoqDFa/AEB3xXh8ex5QjKBWAFkNLUlo1CQ5nFAh1A\n83e/tMPKrPlUMlLw0TuL8ZgC6eAbJVqw8pCiis/Q843lFsrb9WQfrFHxqo70\n8qNA\r\n=zmvW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"d90c163907d949cc3a6b173feee87b0c3284fbbd","scripts":{"lint":"xo","test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","GO-LIVE":"npm run build && npm run deploy:production","QA-TEST":"npm run build && npm run deploy:qa","pretest":"xo","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","prerelease":"npm run build","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"5.6.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"9.9.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.0_1568626299078_0.9948182916879094","host":"s3://npm-registry-packages"}},"0.0.4-qa.1":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.1","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.1","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"d865ccdd4678535a6d1ab7522531a65f1803435d","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.1.tgz","fileCount":7,"integrity":"sha512-suSLThKDPIyb8dOiCAp8+P4afBU7rVKd3TvkBZyqxpon9CY1pom1ONByZLEGpO4fjQ5XJ1Ygk6cG9ojD/nVtAw==","signatures":[{"sig":"MEUCIQDX1PyAmPXSX9qhMiRpkw5d7sarpAM0X0vs7IJap6uapQIgOdTk2A0I5Lr9/yZSRKMCKNsgI8zGVXaZeRJFJd+GjRg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11786,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf1eBCRA9TVsSAnZWagAAAMgP/AlbO+SsBVdLA9DJ9If7\ntbA9pxSrqcJxqXzPVdqqjPjR2dDv4QxLc3AKWs5M2Cq1NzEzx+mOWA4kwa3u\nrK7fnVAyBWB81gu+l41DjiyKnY0PRtHVIuuIaelP50F7KLO0FX9siz6ABwlu\nPSObI8y2tKy5SovqHuotJZiqktDXI0HFhgmKodjjZTaidHRv4kwqzhu6R65q\nFIwCwKWQijWrJWcB2oA86s54qqWyoiI/yLf5lD7MbGG3q0mftMf82IK8WsH/\nYjkims4d3pVAWmY7LW4/1A3hisOX7l0h3x0U47RXzraQqJjVaF60oC8FedSS\nYI2bY8EBkBQHDanJM3SFnTLzxDSNq1C7mzX4BoLFzrZenGCPlvkDweL8YqnV\nPI0FIU3M9z2Wu4MHlJdGWWU0TbE6GE79WhHWOnaGVaa5TLIpeSUvBfIQldll\n4bn4IztHUWiHXjFmR210RooO1fqacSqo4R6hZuCntZBXag+E9HQdEXnzCZCF\n6rD2BTixs10PFuwgX580wWvcuoFqQhVhmAexnpNvds8zYHBQQdFfRkyK8nhI\ni9Per3fdhhL2wKOxDLxixl6fRHpyXsUyuhZsce/VvOJx033bv5yToQynETVj\ntlxO3YN6fv/TqI78uCWsn26U/Vu4mJIw/q709J9bH+C947G8kuJlbZQuWkVF\nojqd\r\n=VMHl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"5ca6a29aa424c2fed1edb9f1d962c206f474248f","scripts":{"lint":"xo","test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","GO-LIVE":"npm run build && npm run deploy:production","QA-TEST":"npm run build && npm run deploy:qa","pretest":"xo","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","prerelease":"npm run build","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"5.6.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"9.9.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.1_1568626560890_0.5292169232060593","host":"s3://npm-registry-packages"}},"0.0.4-qa.2":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.2","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.2","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"ecaa92b89b1af54849fbdd828303f8304163100e","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.2.tgz","fileCount":10,"integrity":"sha512-DS6dELtmMEEST26iBm9jBBKBwRtg+kaeYaxB0LsNHMPS+/hhOPOt8YxYkunGadlLTi1eF3tIkUF3OBmrXWj1ZA==","signatures":[{"sig":"MEUCIQC4jcgd16LQ/XpszjaPOnZcziCEZbkblfsvJ6KbzNMoagIgLxbynvVGh3eEsnOTpRE/xClldPdO73s6Uf8hMG1QjBY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf2bjCRA9TVsSAnZWagAAt+cP/1Sy6KlzNC1T2KhAWyeb\no2Zw6i8D+7uA8/VFcVhRwP2iZ+oaGoPVum27m9vVTLjipXrgMmxykr8Te4/O\nl7MD8hC+Arttv1ND7fyiUOcXEVob4Y4gpVGU0cWgW7NcrnIbw56IN8FAVgRF\nnCmE3dL4Xx0OZaOE/EazlmIhIv/7HGIern9sA40hvInjNPstLeVf2VthjDbG\n2S0Th9oORvq5eh8ULRkm6QRDblack5NRvkVlZKMNhyOFZ3ISPtQixBnJQKQ/\n0a9I9K2Yp5ix6j8qep0NL2GkbhxQxXysCMqII9o0i9+vnOGdtU1WXs2DAGE/\nG5G4iCJZvqvyK8oF8PsOrWI7lpLu169WdFZjmu6actEJjEcztnSb3o8liE9A\nGTWqwVOsM3plq9TZfA73hdOkeC7YkstkRIJHZhG4wci4Hq+VsvImr6g6sRIv\n9iXix+TGXF8c5Le0MgvVYUjGTz2S1bIeXCV2c60xVtLTQxecn/kiLj5nYrfo\nGSsU7NIrZVsf86FuTVY0AZ6waeOf/FzWCKiCcKu/lKMsxEOQEfA/DgoAF4Yb\n2iAA16QJu5xBtjkU++Ns3adnKL5Xb7LwwPVg+Wqoo4pW4H4jJl1fjXLWOJUI\nv5xWYypsM8UKU5Dv7AHHenE6o/MgHsXYztaZt0Qe9Rrir+tIGP0h8X5N8Dwh\nIWeR\r\n=lXKH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"f75e5af398574feb010f1c60e7de5570bed98ae7","scripts":{"lint":"tslint './src/**/*.ts'","build":"parcel build src/index.ts","GO-LIVE":"yarn build:production && yarn deploy:production","QA-TEST":"yarn build:qa && yarn deploy:qa","release":"standard-version","build:qa":"yarn build","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","build:production":"yarn build --experimental-scope-hoisting","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.10.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.7.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","parcel":"^1.12.3","typescript":"^3.6.3","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","@types/eventemitter2":"^4.1.0","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.2_1568630498883_0.7840831573590288","host":"s3://npm-registry-packages"}},"0.0.4-qa.3":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.3","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.3","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"f1b40153107da884a7f757976ad9afeca63ac2ee","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.3.tgz","fileCount":10,"integrity":"sha512-sYBUj0SiW2aCxC+h+nxasWkMg7U/yA4GTAoNZM/wL+KfPMuXWqKx/6ByiDS6G3TmcwKIvzZohAgcO74nSD0LQA==","signatures":[{"sig":"MEYCIQDXpZWMRyQUhfMjc4qoAbkfTqgDqbt2DGowSYamAcUx4AIhAOz0PmAGtsmvvG1jzoc0ytHveT9kmQeukaQ5EAyB5QD4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf2fzCRA9TVsSAnZWagAAavYP/R3IPsLApL4UTS8jRcwm\nif/FpcVoBdtWdRqYbh1IaDYjVHxqAtMaNSS6xoYLd935R+op7gxemsvqgm53\na+n/Lx81JyZPcGVHNT+4dsAyLOyrdubUqKw7aPo7TA5rxysw/8SZ9QksUnXs\nX95ksuNfLsYXmabw2lkAkU1iYRbfBDgLmbVmw8D8SeOh+ik176ZAHv01KCOF\nc2//BabUv+U1esWvavpP708cpTl+2LWQERyOJbNifw9iykhAxFXvyKKjiVpG\nu669p+xg5cEzBBtpYL31MjWBQnx9U2eDuopg6uGMZXw1O5WkrSsCpB9+vuA8\nkstbSm7Y3S8i0J3GGZKCfZ2wvxRJFNuDholSFfaoAlk9T0TLNSmWUghHoO7v\nC8N9EDXdeKakhKQfUVj3iFJzoC/sldGJOd9ANu5PiYoY5i/BRYVXjLAVLKbC\nUuL5bzPpQFBUsqJiaWte2e+2fcrJ4E0x+Ir6g5P15mJfw02LjKveSYvO/RQy\n8Nh1Q0uTCHEcmERJtMNHhoyjwsU6Jg7eZ4sopSdsfw40OaOyLZ/9oocVqtr8\n7QmV8bkeQWlSjSv3SQ+9Fj1qeSJ4jfDi7zGY+fe1qUi1S0xLGLCQH++gBmAw\nixBDfYgLrxj6IdUWw1aoIxsnOB3UCuIhd5hAZCjTIxCQ+xiLM0RTd/oZ7hEd\n5pKN\r\n=BIjo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"f54fc9eb36a763ffb6e56e01d7afc36e97e553e4","scripts":{"lint":"tslint './src/**/*.ts'","build":"parcel build src/index.ts","GO-LIVE":"yarn build:production && yarn deploy:production","QA-TEST":"yarn build:qa && yarn deploy:qa","release":"standard-version","build:qa":"yarn build","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","build:production":"yarn build --experimental-scope-hoisting","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.10.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.7.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","parcel":"^1.12.3","typescript":"^3.6.3","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","@types/eventemitter2":"^4.1.0","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.3_1568630771072_0.005009258864408617","host":"s3://npm-registry-packages"}},"0.0.4-qa.4":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.4","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.4","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"1c6a77cdf88682bcfe8c5ed26e8944b747b9b0dc","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.4.tgz","fileCount":10,"integrity":"sha512-jqLiY/9aP2bO/KoP4VNyZZ1VJ77fJI9x1Uix6ArW4cbn9LYk6D2UQp/p7JizxS07R0MxfVmimYlFJgrj8zJldw==","signatures":[{"sig":"MEUCIQDDB+apecRIJP35I8rZw4jcabIQerXT2PTGj76NTUNBwAIgerJoKSioNLF1gbN02Ry7OmgaaI33iMMl18tTgbgjQDU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf4PrCRA9TVsSAnZWagAAamwP/i0j91OybkBUaeEGizcl\nxdBBCi/Z3DmcYaHaIO1Afqr4gPP6nHUdGObKeeh8VNsggubDDE4nvNGOpKXG\nrS5uJXfe2eA6DlYx+0zGMoVuJVmXag2+K+092HP8YbdgwHGGT62vpM8kEBKX\n4Shb1Rkpj/kaROkhSw3TSd6guenie5uE9wBS76rEu5dKBaH+IFKL1ZCgLQGK\nWQ0Io5w9wgNLNRRjatUwjoJ2lmPYth2qw/DdHtpeTTCAR/CP2cir0HFjOzd1\nPmYPMukvHxnsvG0ZhQx8JHynKTXtWJqpsjA5XKiYqr2KeciNgC5nbPBhKB/N\nilScFSMd3AsitgVdjz6IRK3EEc5FwH4ZQPBWLVE3lv9/CTckfb8U8t+K0XuP\nvYbIrO3ovRnqLwFyp8wEm8SEIAnhStxHpRVKju1pl2XS1nCi9GH3yzs+aNYE\nV64bnR5WCIMW+NaFPXkoPaBKD+2AlElfkRxaL6H4Z1bAPKMuPjqacPmDJYS/\n6dgoO0XiryZ8L2Goss06DuAb3gNZHewjH3I/qjX/tAaYE5WSo86F/vW05/Zg\ncwOWMrtsx/WQ6oxkQfTMG4P4U67je45/7YzdaC3FuFljyTaa0EBxVEGjyaMC\nrM5yButizXTEHK/ToYNMt/2WY2eIH5mFK3aLieHTnU4qVjtiorLOVKcdXGBP\ntwL6\r\n=Tlod\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"baaacb69ded7a169bc6b6205abd02e8a4e474acd","scripts":{"lint":"tslint './src/**/*.ts'","build":"parcel build src/index.ts","GO-LIVE":"yarn build:production && yarn deploy:production","QA-TEST":"yarn build:qa && yarn deploy:qa","release":"standard-version","build:qa":"yarn build","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","build:production":"yarn build --experimental-scope-hoisting","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.10.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.7.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","parcel":"^1.12.3","typescript":"^3.6.3","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","@types/eventemitter2":"^4.1.0","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.4_1568637930426_0.930782601511609","host":"s3://npm-registry-packages"}},"0.0.4-qa.5":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.5","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.5","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"09696f17ef8ffc95a52c102b285b078e3b701127","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.5.tgz","fileCount":10,"integrity":"sha512-5jKAnTZs1Cpfhj3kwZtH1gsBscwVjzIWC3+TbhSmrUJnS7LXbwUfnkO8aBXq3G8RHe3eCiU3MnzI5WOkbwgTbg==","signatures":[{"sig":"MEYCIQCuz3dN6n/B5gEILkLAYZ8/JTTo3ZmoXBWceogvQRdMiQIhANqLQGpi+UPTl3/xV6+T5R7AucYW2B6L8PRllX3kQz6V","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24933,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf4bBCRA9TVsSAnZWagAATK0P/inCOQ4QZg/x4NTzzw8h\n6PYXGZOmhLshGCcengJFE3t4leQEfJCamw3Cj7XPahDTGkTxQ9C86d5P4z6H\nBLR1H6Zlh1GpGwjnR5y8hVzO5F7rtvjmDDKQf9Q04NZF/jTuQUeLtmbIXP2K\nSKrwJmObUNSXKAN9fOpjxhQLzXrsfTQX63Xsoa1BCIYKNb2w+3bJ31Sl/M80\ndXk2B0ij7ydjL+2ESVu2sGDvqoywDGEYcgMrl7onCebT9Sw1LEq+JrKlc4M1\n8O3A4wzFG+x4PsMF8ZNp+OCbf44rNfFEew94TL+kdOrpiwmbjV69ZzVqXtu5\ntYJ1glPH87qsDfY/zDXVCZv3YcrsKx6MCQuDJ4pGeBA9hdIGn7bOQ9LgwZXC\nl4mGdRdcjUtYPVq81TUeRCzPhvOm89bpgCKIDkNdLZ2uMT3bdAwVZ0P3ZJTB\nG823RMWu+54biQOZPaX1YE1Mcg6JCrD/T0adev6oZJlx6507Yo/pRRZiY0hv\ngyXezX8uZ8BIb6FlF34Ts9sdkk5SR+SE5sR29Gxg84e0ey0JaAIOrZua80se\noWn8IMfK0lAIPDtwkKfpPwzjcH8tFFkQiuW8DsuQtFqmYF5H6vX9ZUPjTPw9\nrTTKtzGJKMoIQcSl6+I1bdEsPj4Mr/W4ug7k95SGK8yxMsHpEEbX8YUzMN44\nIxye\r\n=7ZBq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"d3397b7ccc594907fd5063ab0e78327f821f55a9","scripts":{"lint":"tslint './src/**/*.ts'","build":"parcel build src/index.ts","GO-LIVE":"yarn build:production && yarn deploy:production","QA-TEST":"yarn build:qa && yarn deploy:qa","release":"standard-version","build:qa":"yarn build","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","build:production":"yarn build --experimental-scope-hoisting","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.10.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.7.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","parcel":"^1.12.3","typescript":"^3.6.3","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","@types/eventemitter2":"^4.1.0","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.5_1568638656614_0.24547402955649278","host":"s3://npm-registry-packages"}},"0.0.4-qa.6":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.6","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.6","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"538d348405ced535182485722bc4e9ac26c0cb34","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.6.tgz","fileCount":26,"integrity":"sha512-zzUnsFpiLqeHaggwU/jIJWZ3va+gjw2hBU+ARGZxyMDiViA3ZDNHfg5bfyUAyXYN+NFghT4jRmxbMbA9VtTLxw==","signatures":[{"sig":"MEYCIQDFFZhVqa9c9O1IP/hrt//286V6ZXLhMXJ1BRPb+sVqHgIhAK4jrONu8RkmcvgKozDHkTgbXZWD+o+WATp3KPf+TwnT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf54fCRA9TVsSAnZWagAAr18P/RTPZlicjoHrdkma8uc6\n0hV7rWbh/w/5Z0fC0DHZqXTyx3LbTGYFsxOLm1Kdg6P3F/Py5bHJvZPv7Y8s\n+8emT50oHqLle/H9yB9BLefGDcLZ+uT6MwggIGy7tLIGYHlaONcajqK0Iv1J\nYmnRnTPePFW+m4EYztLlRdUITEcYB31cgj6LF5QPey3+mnFuiXxtxPHzGvOz\nZkvP6xOCuFbfg8EJAlFY+d9sBQDHMZ4QM+reMR8ziMJNpmrs/cPZReYzTivv\noWLqKwwam8ooYtrqY2TasjcAl8kGpbjKYhzA5oZWY4P8dhWxJVb9WQjqXrzU\n9qfQ1yH1VetPjLfs0lRzZC2Evx9vrDjZ3VVuGO/zrv7XLwNozAiK0EdDgG/+\nPrUZS73hexfhoK+8eQR0l+5O/usRRoIOWVx+1jKibN0NDU9/YcUHQBXSzJn5\nOfPKAPdB1VBUATvVInspCTX4e5HI+PXsXN9SXyCTJQRairAVFwzB1YQvNphh\n1E+ExAbLIb3fcqc1E6PbnUEY0RHJXBcDLCzJpU6yEUVjpkW43KbTdepACCmm\nM/+le1iUOGxjvTNJyk83ivXN2rwrIvs699A62rUNqPlBAvaRHifOOYecqYJ7\nh/2C0YrMVUjsqK0TL9B+1zeVFVic1T159LXrSUe44I4EE3qPXm5r6RmOFKxg\n5UC9\r\n=HI2x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"bec8498f8ac5b9f6bcbf1c45ec1dcef3a5d6d2ff","scripts":{"lint":"tslint './src/**/*.ts'","build":"parcel build src/index.ts","GO-LIVE":"yarn build:production && yarn deploy:production","QA-TEST":"yarn build:qa && yarn deploy:qa","release":"standard-version","build:qa":"yarn build","bdd-build":"parcel bdd/src/index.html -p 3330","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","build:production":"yarn build --experimental-scope-hoisting","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.10.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.7.0","dependencies":{"readuz":"^1.0.0","fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","parcel":"^1.12.3","typescript":"^3.6.3","eventemitter3":"^4.0.0","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.6_1568644638735_0.08542967079181274","host":"s3://npm-registry-packages"}},"0.0.4-qa.7":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.7","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.7","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"69a15086b35066e96fbedfe936c2234e6922d100","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.7.tgz","fileCount":23,"integrity":"sha512-rMeDUT6r2gRpm9Z90P2aboKDGQJiCrss+9Qx6FdJyAdCuDJO4tWf+q+jfOsAV/1AhNQXXUUWM00yz4O9qw0djQ==","signatures":[{"sig":"MEYCIQDdt+97GzUoaPj+Kyam6uVJO3KxDqnDqTC1NNJ+B2XBvAIhANapjyDJSprCbMXH4ZMRsHj47bK83+UlaEbh0gwM4Z7n","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":62982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf56ACRA9TVsSAnZWagAAAqAP+wUet5i67EYegHX8fOAf\n5bPDBRE/QHNdqq+4ClHChW8daUYXesefK38poXi5zDEk8+E88lVi9z5Rlmxs\nwbF1B60WMlqT3iuvJoLLF7c4pL+y1TymUC2wYsE9mKqNwRjFJbc8k6ALcjRa\nd77kNrNb25CYeUTDKv6CK/gyA/Mv8Iu4uHn5qwo1OvqW0HaNYFWKbklSvPoR\ncMzre6hFTRkNGBYKC8RqYMX9OHSqMv1nwoic+J7OmNQ7fovp2yls7RKX8RRw\n5O4MqoT8nXKMCQJJy3kuFPK8Q8gR2SuI9bg5eaOfoiH5pYyn4Mkwu6VsGHp0\nIHC5Ggn/2RIm0Wj69nx657MKvr/FnWDW1KM7wUy9QE4ydsuP9oFSomh8dyhv\nKO68ijC+ETCzxHJhRStSy6tPh6sm2c0N7CKqHNa3jU1okvpuP+HsiezIV6sr\nvuyn+pju59vAEv7/RS+bhhbPq1W9bq7P5IK88g9n8qFgtFWDSaKxGT6YLd/0\nn0iLyTAGnLzVD1D1mJaTUH3p5MH6MZGJlnCWE1vQ+Kt8O6sIV2FcvhQfwCCA\n/Z7hOFue9YVXkKF0YIGscJ2A791hHHHhKlRg323jJk4PApB1XVwAyD72cqnY\nvwHjGwgcjl9PkV9pkiMjVpLKeeoRj0rXtT5yjRxU4zULBHAFtfH4ROYYjOgV\nwE3k\r\n=uQrS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"aa83cbe57497a5f104ea6d1a5c4250a46132fccd","scripts":{"lint":"tslint './src/**/*.ts'","build":"parcel build src/index.ts","GO-LIVE":"yarn build:production && yarn deploy:production","QA-TEST":"yarn build:qa && yarn deploy:qa","release":"standard-version","build:qa":"yarn build","bdd-build":"parcel bdd/src/index.html -p 3330","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","build:production":"yarn build --experimental-scope-hoisting","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.10.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.7.0","dependencies":{"readuz":"^1.0.0","fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","parcel":"^1.12.3","typescript":"^3.6.3","eventemitter3":"^4.0.0","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.7_1568644735400_0.5158098248110823","host":"s3://npm-registry-packages"}},"0.0.4-qa.8":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.8","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.8","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"561141cafc73f9788a294a928b0ce2e870888450","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.8.tgz","fileCount":26,"integrity":"sha512-k6Slj8nB/YCeWdJIDJLWoYkJy2h3RdZFyA8Nh+bIR4KZ1gSl5B/RXVYnyzWqsW4ZfGeVO7sV5EH2fGkL50K2FA==","signatures":[{"sig":"MEUCIQCvzAQX0g/hTD1eloHyot8eAMAq2HZcllv9kcr3Kwk40gIgd4o8XXDHcgzk4B86Rx8CQuO7B6go4jmpCVZrMWL5PKk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf57fCRA9TVsSAnZWagAABu4P/3IcLqQnDR6L0aHBpgHI\nPrqyMRcymc1fjZgOyD5qVMloRJbZ7e31O+P8djnFIF9fKQClTOZu/Hc9hpfR\nSlZoBAonSou1EZXTi14Mq4Hkuw2DwdGsrLxSg3D7EDRFFGrnlLpFPoXgLOmC\nYZufOWmsH4GD4NArhiIC/AwLNTbs953s7S20kmXS5dS2T+2p+z0yat8WiYc8\nw+AhRz3Z5CcwmHPYEallaJXCbby6R/6FnpEj8AwzFSUzNLiOvtbgJLJWTC5U\n+ARGL28Xs4xB8baTa9PcKnC5gf8ZMSosbnTHatA+SlA7pMvKdU808Lu1zunF\nOcc0zAZp+U9UqRVbzAGc9rd2rbJ0o8TUU3VZePUMG+JzIjwq63lUIdVKirp7\nxEJZH+38RLer9JeY5B2sOYtAor4kiFqYmZiQrTlilfe8+MGgOHndRQBLHWv8\nk3Atdflpsb1iiYvRW1nMM4OOZKz0JbP1P0Xp+GpgUey6a1KrTZ2QbLWnyBzI\nJqQdC3pmHpYehyfvjUxUKSe1X2EhkcGX8RELStZpRBtPF2ZpVB1oOykf6w9e\ndUhnKPTmvKxhh2PDYmS7ASa9UOxS6eNxG0NoSk2tk5MddtNnOmUDeSzowfDj\nanHn/tPLQIZT4xD2nqfuO0xK6WkAChElNtnmqmsHWLuEEElB3XO9dUvsS1RC\n3228\r\n=z7lU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"db14348fa46b3be016665fb83c0fbd6786f20e86","scripts":{"lint":"tslint './src/**/*.ts'","build":"parcel build src/index.ts","GO-LIVE":"yarn build:production && yarn deploy:production","QA-TEST":"yarn build:qa && yarn deploy:qa","release":"standard-version","build:qa":"yarn build","bdd-build":"parcel bdd/src/index.html -p 3330","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","build:production":"yarn build --experimental-scope-hoisting","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.10.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.7.0","dependencies":{"readuz":"^1.0.0","fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","parcel":"^1.12.3","typescript":"^3.6.3","eventemitter3":"^4.0.0","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.8_1568644831300_0.9045045502608566","host":"s3://npm-registry-packages"}},"0.0.4-qa.9":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.9","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.9","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"aee859fd5a2d4c03da7f2c0f14e4618d9ad50589","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.9.tgz","fileCount":25,"integrity":"sha512-ykoAvUAhB7Sff6REKpZFoI+oZDgX4vDayICDzBzywTMsR4Szpnp+J5joFYhm/4loseR2Si5ZwEFKWFaZnQ68fg==","signatures":[{"sig":"MEQCIGyUNqgvTXaSR8akX+PHZXbMaqVKPlNbzdammnE4yRGvAiApR+nh431JWNnxDv2THw53m9x0pIlvS284xC42rg6BPQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdf6GRCRA9TVsSAnZWagAAxWUP/24E12Aov/HU5DZlbhIR\nLL879l2tM1gFwxTHl9SHwdjyg1XdDqkK9v7UKW+W27lL6+/M5qA8N9SZ9gI8\nVGJnQ2fEPEaKMqahsa8eyeMl7Veas99fgqnRnEloVzv2LDDH7ioUO3E3yHoA\njJL5GPjI2VjmSH014BnJ3iVFNapFLXiBDuwGIaWkRJnD31x2oaqqSeYiDE4p\n5atMhcCTVdX64e7qXbv+0gFY+BdhEZyh6bWXh6+dibvTCY8gbQAkAMlBFnVw\ngVKrSm9B2dzNKEY/cayRRBsYnXIbWZykuH05AMKkLLF3YXMsE7KIjZKuPEx0\njm8dWWJ48549r/rrSZyfiG3QFhAhxqLEMsKyjWMb4q1ZMVTBZ+fZkeBdqh3g\neQ/dHkVmz9PZUvaT3spWNKLldWXukOj8vEtAFGag5fAQsuuKLlystBARSuCO\ntno326bBfTlbPikfLRUs6BEL+gEgT5uUqyJstpLKpdw3EnyAzS4zyqa8TBYj\nIStgsVbLWS9vLK2RBVdJ5+TEfE2gcv40ENzfvSdBrN8lEm6s5iFkt6Yqhf8N\nt2DWVYViRIswlrTFsnxjy+yparCG+zov94DB/aN8T7KLPX/MOZ9f1+8KppGv\niTnyA6i/wBEj4Pxb262n5YcsIgGYjZMU2YTDZlOQq1bLOlIwsNGzWY+T8QzJ\n8JDR\r\n=LkaT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"82bcf5fc81bc23d789412d2a072c1716cad0ca3a","scripts":{"lint":"tslint './src/**/*.ts'","build":"parcel build src/index.ts","GO-LIVE":"yarn build:production && yarn deploy:production","QA-TEST":"yarn build:qa && yarn deploy:qa","release":"standard-version","build:qa":"yarn build","bdd-build":"parcel bdd/src/index.html -p 3330","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","build:production":"yarn build --experimental-scope-hoisting","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.10.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.7.0","dependencies":{"readuz":"^1.0.0","fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","parcel":"^1.12.3","typescript":"^3.6.3","eventemitter3":"^4.0.0","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.9_1568645521120_0.17460529410675574","host":"s3://npm-registry-packages"}},"0.0.4-qa.10":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.10","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.10","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"54a85406e86c46b972b5dae52878667eae6e7110","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.10.tgz","fileCount":34,"integrity":"sha512-aZbVwyghtfC0wpSpM9mVXMQK51Tp+hNWUPrrWFkcrHPlL0JeJbu2facbgPARrDVkA8wZ7dpeVQghRg50N+i/jg==","signatures":[{"sig":"MEQCIGRCwIXanXsCdm9dr5jtnabdgOca7xeWATGtLOJDbTUyAiB1lCsY5GMZ9Yn338yrJimXd0mLY2hRw296/bj28ESVLw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":338051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgP9sCRA9TVsSAnZWagAA6v8P/ROKEHUOUF3C8hicEQOy\n3kwNVJf1ExftkaPBe2xC1ufl1/TG/dU/5+cOqqYJGoiH18V3zM763L947DVL\nkT/Yxc+WIY/ul0Su3a+oKYRqZfsFvbghPlGiN+ht6UzCpUqkzx6xGtAlnSQE\nmrP1iF2BLOakSV5QrQvAy2cDLas1M0hePdhL/zihKxHEjAf37fKOPdi7LoYH\nyGUl93v23V0GzMSUqXCr+H22RFpnuB7cHenvHRRpViON4POhB3ESvDnDTGNl\nnIa4ri7YDKJwoFdXTzCEltHSRX6LUoTCREDMcRcD4e1DKl65h2MiOOP+ODZk\ndFb3r1J+qAU564C3aWt2hxBygfM8E5Ex1ZsYk30PH8fH8ywiyTp2sp3s9c2f\n/TxuKZpu/dY58ojnqkEB18XDGHNZ1G/5Sw0JO4eKqd6dUL0JUW5oP1LM5TKE\nekgKbLSR9NBhNbaP8r0KwHtsee/gwORuXSrCvXf4ccV5h+d+XGbxpq8SFYDF\n/6QM84193S5Z0/MhtTA4HY7BYs4729SljoBd4gMz5hf0mebz06/vjoYCSbrS\nqQv5CuH36axeEt5Dm5XpgVcDjiNwrAtFL6eijuqWC3DZ+R48ntykEjvKEx+X\n0WPT76aIPMd5oR+qnCeyQBDpkQ0V9Tr46XTytLPQJkIB+wDaWtrgiX3/uOIu\nkilP\r\n=o3iO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"3d170da8a0a192ab0d7f27d31ffa3e66b9c6c28b","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.10.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.7.0","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.10_1568735083508_0.7145831660726807","host":"s3://npm-registry-packages"}},"0.0.4-qa.11":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.11","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.11","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"f4f5c9e20409c2c3d0880ef0f188c8614d3503d8","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.11.tgz","fileCount":33,"integrity":"sha512-E38pV7GrEcntjrYM8XcSRjAt3RCxX5rsBAu8zZnsXdcY4eacEDaxG30fgXaVHVSAMD5mWHq9zztOc5LKONYagQ==","signatures":[{"sig":"MEUCIBQdr3gtswOgGmdXafsUH6CVzOFEiYDPG/WqtFNR92EdAiEAz0yLqSY9S61cNG03kzwHvCH+XbwQz2PHmgsux2uIvjE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":68409,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgQJACRA9TVsSAnZWagAA/koQAILC9SIEk+5HUkuiwX+s\nJA21YTg3JGTRaYb9K1dqFJ3TKUS3xnWX9kMFLiw46O+uwCEFKLRILsIKWhYr\nN1sUtlSYV1kJaeS+FyK8BDuydEtkQgRaCqMtDbnzTh4hvXy7XIm9gWTAysID\nvsmleruuUPC1r9IKJVVHPpiWtuzea9WoC0teUAitCeYusH0ReV80Jequ657y\napXsR1ookuJuOuVV/5pTCgkv+V/DaV2tuVJ78i3494HOmcFTYimfsKDSowvp\nZ6AhbHfOOxQZcsA3ucS1cipgZNhmj9iRXRSAPGS0Hh/fQlVunNo+k6xoKsWT\n5du93NhyoYuWXK9ZLF45p3M5y+i3+kjJmPomiLcjzmE5xVOy0KRo4DGv2Us5\nj7JBh0kWrGAKhpCO+UScSJxynnKNwjvyP47kNbboZfe/VrWmYdOrkNM84NF7\nQkIeytfAifZ+f6VA6FE6wB0CDXUbeky10+jCc9BP2CewivOjKY4ejNld+LQJ\nWZ/6HFZMNYcdFU3vmG6gFVchr+PeurIMDNVyenSdhcXInJgP5m0ONJsJZiVy\nlpKfV4vo5SGcAl07qijmL1Tu1wBScrLfXRqYwNOm2AZTHiT2W0d2ee5JBRkx\nsBwKZrfdh7fHRiy9nchKTXx2+kfF46V6wNc8D0wGhLAb3Tge98kuaPnkueiM\nTBTn\r\n=m0hH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"32163710e303c94e581d04f0774024169ec9d055","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.10.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.7.0","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.11_1568735807772_0.014900061645438223","host":"s3://npm-registry-packages"}},"0.0.4-qa.12":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.12","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.12","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"jschmidt","email":"jschmidt@goodgamestuidos.com"},{"name":"jschmidt-ggs","email":"jschmidt@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"43f7fbf987ca6740f4cd664b3f56310e3ce611af","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.12.tgz","fileCount":32,"integrity":"sha512-lg5YLpPTs5WL6vfLOOaO9m7z4EBtA13NYpRxOIbVqX5gMhtv1QQ1ZOUL3sSZxjulzw3KJwI+3LPYKwHfE8GupQ==","signatures":[{"sig":"MEYCIQCGecx461wFZKGwRddz3CjEbifQEsp0Lq1jmYEXuginRAIhAIAE5gglBDrYoxZAS/RPIBzCR70Qnnm6kHHjb3wU1BAr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":68887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdgQYlCRA9TVsSAnZWagAAGl8P/j9UmaKlT4rPo++M5ELk\nJqb17wx4s0eG8+tS0rTw6hBpN1pDvQ2voLYZTPIf2qNNqq0avssxM5GJ+b4J\nB039wMbX2xOdogWU5FJnVRjPmTXL7kfU/jt5M3OpeGTtAjXTlTDhfa283SNP\nBEWuB5z71BVpXxP1qfYa5G9mS+/cG7YHvwmb7iv/mkGcLAiNueAjQWvppPkk\nCJ+o/XnRwnYLqaqQowtIguYXL/0SeRdPNFaW8ObXU4sWHarWm0nu3KwljnuQ\ncucZmwobwz1vUDEhO71BdDUp1b0wTqVGTAp4K968sEfLK8D4I7uj1BhH3pFd\n/jRGBbtZcIHTA0yb7BXWXZvQEyKaNAS8qREO97RBMtTR79tKHQ7IPaV7AUYC\nD40mYGmsNO0L/hV7puyplUpZeF1mJnfbL5bRX+lXDO8LbaNBWqNy2lT84nlv\n8ORF9KCLNeZlxdBT/4pM8/5xtRAHXPUMX4TnGZPPgKDBFIpn+5kbSuQC8efO\nieWdh01fSnpr6g9aWzpvWZ704VmjShuAlOt/Zac/mlKyF/fMRzOYRmgVkyKe\nqAbPzsO1xg3f8sc1unUFSA0w3sgewZlMLI/8NmCO9H4NSK1zlN2P3JXyet5B\n1Hm+eZxNFMvq7TqZbEkTZUe1Bi57wwswCuZYajbuyuMkekvYjC659+ILBH6D\nV4lI\r\n=vdJl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"c85244a55df3ca9dc303dc3b987f94cfb4ce9a30","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.11.3","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.0","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.12_1568736804725_0.09557001380297536","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"571c767334364037062753e152a128c921145054","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4.tgz","fileCount":7,"integrity":"sha512-gYFeYHJUZj0EIL+1/2aJOibQ3HRHkr+o3ovyJNn70isTnY7Q0x83eYl6aubFQg/blm5VLpnZo1diXA+pfF1SNg==","signatures":[{"sig":"MEUCIGDTVvx5zqpvtmYPERVlCrvUJWmQsPTU45XIdu/TrFtHAiEA0vRaef5Mqu/3ABomE2ei6i+cVKiKyNVycAuyf+XvzhQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2JJaCRA9TVsSAnZWagAAJxcP/RjTxHiSUaqzcM573npR\nWkWzVFh3ZQDuYrmPCti1YVpP9A2oFGtej/r/1wxALC+MCyfMldEqiAvZkbbj\n6+ttnjMKZN31M/O1nO9q+SuZ9fQb3LQBaZGCqJ19KAPtk6IxZknkpfhFaTTN\nzYlOP6Qb/uEVQKNRiQRXtJ+hWPFLQ1oL9KNdntl1etq2rpcfhrjj/b+T86Ta\nSTptnL8GpSrG2mB4KeEswwpR9xUfmraqahn6ErUFbwKW12LkLsEPRf7YvnqG\nt7H52vGDtQ4762nBSBJZndrFb8LqV33LcXIbIYAPRq/Z32kMv9UkWd0C5f+P\ntNw4dATizi3/WUm2rW7dYIk41WcxcNjVRBv7Cyvoa121jP34pmYae82MBO8h\nEtcAUEIbiYPN49rMfwfzRz9WAOASBXsQUZ7Q+u4z6+JzYV/ohNHC+4pDp6mn\nPxcw+njxCXw67sN5Bnu0k6IfivCLk3K9pPVn+o0AIaw2DW9H61kg+Euoiper\nz5c75VbhNc5xQSqkXeZMuzbF9NKaqdgxlwibmBOqfFSBAbU9Px9l6dGqRh7B\nRT+mF3LVrqtn3JKfczka/qfJ+a4NbMZF+3zq1GZCpy8vOyq/Jzn9lKh4RBuE\nUFPpEDacvWlAb2P+vpc1AW00v1ocvZOF+4exSuCs9HvSSs0zoGEuSGMcjx1C\nVg9D\r\n=h4B8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"6d46b1d797cb7da50ad1cbe472d2f66186beb9ad","scripts":{"test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","GO-LIVE":"npm run build && npm run deploy:production","QA-TEST":"npm run build && npm run deploy:qa","pretest":"xo","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","prerelease":"npm run build","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.4.1","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"8.12.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4_1569596898469_0.04009236511678971","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.5","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.5","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"xo":{"env":["browser"],"rules":{"compat/compat":"warn"},"space":true,"extends":["@andreaspizsa/eslint-config-xo"],"plugins":["compat"],"semicolon":false},"ava":{"require":["./test/_window"]},"dist":{"shasum":"d5327ae1844087dd42bdb68a1436c77e23a07610","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.5.tgz","fileCount":7,"integrity":"sha512-cb301IRFEIr5ZbvjEVDMQC5zsmq+KDMifrBSt4jdFpczyDBEr4jsQCG4GaXLYZJLZFIzwOlhzruPIiAJ4K9PUw==","signatures":[{"sig":"MEYCIQCeaUQ1eVEpWec4kTg3j5WzgNqvB8TcgOKTbVToHrddTQIhAMA/OxWLkWBOcZxbL9utSDnLPs5MlxqwwbFi/llJGHh/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkb4+CRA9TVsSAnZWagAAN84P/iCjPX/yh1ACk5VingNq\nt1S8S5gYi6msNoY11NIuolclXJhThzQzoa40Tzdc2GWoOiAaM9q4VS+8UV48\nC3hq1salAoJ++RiogxEwX9lLzetSDSNsMnkGF53YYe6NcnNgtvosRWG88m23\nGjdk1n3aLy8RnHi98fSYbXD1U/pHdDBAFI+y4SphQz9oLrWR6MXlWa27YxGI\nsOGRr7iPel+lKjE8hZd1486214W9yWYnq/BGivoDO0iQ9eRGTtrcSmqn8l68\nax5dsW0P3OqDcsl5PpjmwIqtRyuJ5yMcsZP9jFf1mie1Mr95POK5Kg6r4m7g\ndmcG9sx+DJs7grwXvED7IJeuJ7842zSaP7YDmZLBtYgg8Es8F3xFiwX9xBqm\ntIp2HTqFaYQ6FKXJVFfULydkjPOLwDX4gVnv4fw3i3+aMyyWrrtJtIT0xH+F\nr25FDOVcE9BU9K6hGF3khpmExFVNo1GJoQxSzVHYWf+XEwXA33KGWCxxmAzU\nHsWA8D2tD1fnlVBYjPdnl17+u6HnrK5bRxgD8C53o7u59FIvviVe/k9FJgOo\nO3qNa+T50IDGJdChDykaaudSk7uG4XdnZRFdeZeMySLYjiJ89eNEdK6BDTJk\n9wY7gBHC/ZXk0PV1qDnQ7Wh9x5CBq3N65kqqu7ryEvvbZfortlZhk7QC/NAm\nyiBr\r\n=8ZoX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\r\n> Fullscreen support for CXF\r\n\r\n# Motivation\r\n+ Games are loaded into an HTML `iframe`.\r\n+ CXF extensions are loaded into `iframe`s as well.\r\n\r\nThis creates an HTML document structure like this:\r\n\r\n```\r\ntop(window)\r\n|\r\n+--- iframe #game\r\n|\r\n+--- iframe #cxf_1\r\n:\r\n:\r\n```\r\n\r\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\r\n\r\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\r\n\r\n# Solution\r\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\r\n\r\n\r\n+ `window.CXF.toggleFullscreen()`\r\n+ `window.CXF.requestFullscreen()`\r\n+ `window.CXF.exitFullscreen()`\r\n+ `window.CXF.fullscreen`\r\n\r\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\r\n\r\n# Building & Releasing\r\n\r\n### Test\r\n\r\n+ We lint all code with `xo` as part of testing.\r\n+ We want 100% code coverage. This is ensured by `nyc`.\r\n\r\n```\r\n$ npm test\r\n```\r\n\r\n### Release\r\n\r\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\r\n\r\n```\r\n$ npm run release\r\n$ npm publish\r\n```\r\n\r\n### Build\r\n\r\nYou likely don’t need to ever run this manually. Use Release instead\r\n\r\nThe build step bundles the package into `dist/index.js` using `parcel`.\r\nTests are run before building to ensure we’re building a working version.\r\n\r\n```\r\n$ npm run build\r\n```\r\n\r\n[standard-version]: https://github.com/conventional-changelog/standard-version\r\n","gitHead":"e8578b1ad6934b330e68724bad4d1afa387e512c","scripts":{"test":"nyc ava","build":"parcel build index.js --experimental-scope-hoisting --public-url .","GO-LIVE":"npm run build && npm run deploy:production","QA-TEST":"npm run build && npm run deploy:qa","pretest":"xo","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","prerelease":"npm run build","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.4.1","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"8.12.0","dependencies":{"fscreen":"^1.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"xo":"^0.24.0","ava":"^2.2.0","nyc":"^14.1.1","husky":"^3.0.2","parcel":"^1.12.3","finepack":"^2.9.1","@commitlint/cli":"^8.1.0","standard-version":"^7.0.0","eslint-plugin-ava":"^7.1.0","eslint-plugin-compat":"^3.3.0","@andreaspizsa/eslint-config-xo":"^0.1.2","@commitlint/config-conventional":"^8.1.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.5_1569832510337_0.5200011082385467","host":"s3://npm-registry-packages"}},"0.0.4-qa.14":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.14","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.14","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"8688a642292896cb3f135c483b7fb259b1d1314a","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.14.tgz","fileCount":46,"integrity":"sha512-bi9FAjPgDfKYbroYHZdurt0GdRSYQiuy1DEtyk0Z3PvBsODk/kCi08PZzsQjIaveAUxNGvjlVaY8kgtKI6seYw==","signatures":[{"sig":"MEYCIQCWwF13+nBz3atkwbldrQFJpvKIMGMxAtG9Jbz+oB6rIwIhAJ9LflbwpzE7DX2JccbMGDFZ1tWUeIHkyhWrrHR3NN1G","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrsOfCRA9TVsSAnZWagAAaZkP/1qp5dXJ0u4P8RF1U09C\nCFs/0/QPQrTnsATfdeIAr4HLOiBfOGzcYBOaFhQJNvqZI4S2WjGbPC2EQNpC\nzKnZBGqJcrzG56y9kJDubdJtrT7lJjc/nknSuzV9x0+6tmy6ENjAqRt/MYPy\nFF7PH1I6bF3Ssc91B1LqSr+t4l+r1L/rjb038pnh3pI8g7D1zF/ifVKZ5U9V\ntlUpjctMyNQsg5duqxX8ReJ9B/bmc9VgrTlu8hPl1GMhAM+G8NjPFQmjFEp+\nBfCZgederKXzlcPA7W6/rD+vO3Bn9x3wNrJDwDwIYbtZUhkBCmL0cd2fgfMV\nleuoXwUSH4oO/Dnr7M7F25h8eFMbi55YpvhfqfzmGN2eZXtrb0XLophjv8Da\nF4N7E+vP1iBixxzTzfSP/X5I70osKXQSHp0gxqruLbuZAaTrUz1RIGVaOuVm\nThlnwtAZiK2EerQtpBK5YanK2nr1GBGqSqE9EVzFKwqi3VjDmDDdkqBti1EV\n42PzN/aeW1uw9J2TANqvbQfo21Mc1mudbtjCUrBAVbebE5w9nQ2+H7e2yT+v\nWuhFJbh8984gzybx2uRBUHpgClD7yMaqJdvD9Tj9elNllkbCet8TNVijxBuW\nRHw2jhvQyvCRyYQlka6nwN/XPC+Qm6EucX9jDedlCJhd/oLh/wHmlZmcar6j\nCTXH\r\n=ibGU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"403fde8bcd5376822cbd52db728faf4692c55319","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.14_1571734431145_0.5323897246343341","host":"s3://npm-registry-packages"}},"0.0.4-qa.15":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.15","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.15","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"35b46ec29398b5101e0b4e45e3e7dd4ba43b7ce2","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.15.tgz","fileCount":46,"integrity":"sha512-D9O/wjZjiCIoixJDu7eBcEg6M0gHEZjwGmruIhcj5HKq5BlqO7Ct96MDaxu5kGFvXqu9+NCl8yFPuE994XPcOQ==","signatures":[{"sig":"MEYCIQDbEhPZaCuTrWk2WvqP5ISaGFMdYP4KpYKcHISdrx3zJAIhAJOV9NQon0Ynd6fOsKbNr0+P6564tyofJaPaJPZkV0jW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrsTvCRA9TVsSAnZWagAACowP/17smoSydrMAPS5w12V4\np3wp9ynw4n/42vwkpodfDco6ZGl7ZVFvIbKoZuY20IRJ5QvOIcU83puxja5E\nSdI8yf+Gb0gz3R/3Y5mhCmzP0lcCSze2rwMTF0scWRxQF0eaEUDj+Jmq6Tbb\n6Ol7z2hRksubJ+sETtVCNB3kURPXkFgpgjJHeMHQxgko/NEJ8yiDf+5LE5F9\nPmKa16OrwtkKR+TOH6gq5JfRW6CH1f/uqYqlMnPU4h7ON+u0ag5YVEvAxXOm\nX2vBf0J1HbQozLs0MTiK6mNFRlTljDeRuvsNzyGEjVntJeXBeJsfd7NboQO8\nJbxNCbICk5hYeIU8aSp1xOoqJZv15cqpmcYKNMYnH5mnDi1stz1u9PhTj89h\npfmY8uYIrGE4I/IANqM6g8I+dgAniFYPDsHKdQqclmffu5DGSNlJ+uy1DK/M\nbjNl476pIxDVPzdU5NfeigNOF6yiz22aLaGGKDQjKzIqdg0OfpQIG9aF8lju\nDH/197GbmQm3RXA5IgxAHP2yhg7ToV9neTwEzWjmpDUJb2tnZ4HmU4XVIPpB\nUy/6jU6WZh9TcD/bAnilIEo+qwt5yj6l01AwhWEyH9XliezNUyQCdzr4cUX9\nS5vJl9QhVJPbqdUOKa9yfb1gO/dXauInbkdxHCZhkVbEsO+9N2SnVyT9rerQ\n1G44\r\n=+WYq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"403fde8bcd5376822cbd52db728faf4692c55319","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.15_1571734767019_0.3773299617110415","host":"s3://npm-registry-packages"}},"0.0.4-qa.16":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.16","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.16","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"bc67d1d26609e78f0e6212d9e6925f0f77b72875","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.16.tgz","fileCount":46,"integrity":"sha512-JV6608BTTN3yGxbO/3acSif39uhKRBE02iwNkYE9LV1wd/Z5dFmAgLIvFpDQGpuiEtGULmKjPex4tisDvNsMUA==","signatures":[{"sig":"MEUCIAlwxjxOfqHz2Jzy7FZBfDFJWiPkocFp4CHBLDuIMuaEAiEAolPwHIenlDjn/4mc497UKrGhIBHHfmVnSnKwZ4O2o1Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrsUsCRA9TVsSAnZWagAApaUQAIrgio0jHmKq/ikDt/mA\nLZudxDXPGHuT5xPJOMsHAMwrsO85HthvWciIVI+Vcp8xKKM/rbXXWQ8s/PaQ\n2ZY2dFKXqrYOspBW/xzPj3P+aALwRuBJxaEz5FenoiJtkkvFEdY49Xuzj9LS\nG6LLqLGYomwNzfEFE/RJJmC5+tBMP0p9i6UOD0A2TUuPxIzLrvITGo4mZHv6\nayGJ6/9M3z7W+HFYmcc3S+V2XvaPmTBM3bwwM98hHvyutAA0/p2YcbzEdn8r\nN0VjAsxi1Oo6q9XJQlxcVaqBuJXN3B+5H+uJRmObdquP7/fFfdkpvk938FjX\nnlw+njdg/A5V69NoUrPxWRRJHMFBrGFEZy1fnASiQ/4ufyFv/hru5gUxmgvk\n2SyKK8r/5XkCOgYS4w5T/uLvRP8MnqNMpgwCK3Vq09p7dfaiSrnDbeGlZAl1\nrLvsdE9DCYtOfxfvS3Y2s9TaZTe4oDzjd/8DayGGD/SsPjxtS4lba34iGAgr\nLJngfy5oxUxDLm5DUmBGmT6z23PSUT11ErNYijb3SfB2fpUYnNeo62/oI3Tf\nMt+X9t42Jv94JSTSYGI3rWPzfRaEnY9SGX34+72ZDMqEI/QcCbCn6t15nTXD\nUVBxLBiVCO/FGjnIDAIn5Ik+wViZp5YO4fyCPZBIyLrBALTKZjqKgIpilCQS\nBAvE\r\n=s1x4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"c1769dc31763116246ec1ac96ad6b72d56ba818e","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.16_1571734828169_0.9103096004674867","host":"s3://npm-registry-packages"}},"0.0.4-qa.17":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.17","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.17","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"498a94b1d2b9e761177e0b1abf85b1c07a90a2f4","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.17.tgz","fileCount":46,"integrity":"sha512-mL1Su/kA3O1UoFxNxtsfGb1kXW1eNOS+gcBmvvKdZ1unWHSWr8ArPgW7A0gEh5tkJhsVvc1rU8dFJsfloVri4g==","signatures":[{"sig":"MEUCIQCaXK+6CFhSBU4u21RrMggWa70gtQrV73wb+lRkZB94lAIgISPW3nY9wfMySj1aCR+LP9sZrjcTnDxGDxAWJUIDdUc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":93888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdruVhCRA9TVsSAnZWagAAVmwP/iWCOhLjtiLJjlbFOgff\nGKeRQu2tWdgaZX+s0mUa5OLdAxIkgYtFSXJ+LXGUsi6lgKFWp0b6uhFeYyMJ\nd20wHBd6VZxQ2thgEx5G2xaYPAu84VkyBF2bAHmfvriWiR4QmCK6rw/RedKf\nrJn4RHeMXy0spE2wFa+gBcl7eUi1kriA8ISntbTHNt4I4zvyk1/VH9IwEQpi\nTP9LKXmj8ncgAZQ0lo/f1V2R+SPet5DCmWBSoC3+ei03dXyHj+D7bKf/6Pvy\nPJLas8rF59oxfAvbt7+06s8LPqhsVbsjiKUk8lSHAD02AW1wa/TBmoShAnGU\nyvNbkRUeqXoVrQ29rpd/yFxvAd3VgCGFalpo9wZkBvjz9TpaQ24lPN+ve5Ik\nzy5ISrTQkMitSkktxEFtRd5Adw/zdrDfUiR6Pgc1BSHTdo/pz9cSoMwlHaJs\nCSyFakkYLiPFOjbXbd6XwgpvxHvAXvMvuEXvqnXU87hqfSY9fl4QdCyjG3hR\njUFUrtzLYj+g+kZWcpZCWCgTYqDzhZe+eG8MFOnN22/s8P8xP/wIt/uS0gdP\nUnr2OMbc2zNb5Z2tFfPOVzB8VoPGRidMT0UBzD5afaI9TtSPdbpbOcJEtblg\nJwxTfwnOSnLrUupb3vqpDiFjfqeUisiea9d95zX9Qxn9sq7cKLJhyPpDQjI0\nSvz4\r\n=YZTa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"1436ba841b5e4b1a7916f64f758826244a7111c0","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.17_1571743073065_0.466058326678467","host":"s3://npm-registry-packages"}},"0.0.4-qa.18":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.18","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.18","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"2ebf1c8813c466696f3126851b806fabdc439fdb","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.18.tgz","fileCount":46,"integrity":"sha512-vtAaEimIuBEgf7rv5bcZfcUrHZW5poD1tBaHjDi6BZU1iqiE2hnwzFmaP2S8HqwdPaK5B20aghk9OjMek/bQ6A==","signatures":[{"sig":"MEQCIDp6YxM4NgPoLMvv7BqYDBkIq+FHwZqs7iALNavooYwfAiBtEGyeXB+gEpJ+yMeSSwtqlpGRGqR7zNUibrNEjz3MxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":94347,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdru8YCRA9TVsSAnZWagAAU3kP/3Bd1p3OYwe6I8j/0Fky\nhCkQsd09vCkXrCx20P2BxsdAf5Q+NbqWmQdqQvlURdOGfNF6RW/JUM782YLG\nDUqkPON955WXlhv66lA0LZZFLHm0+S58E+ECCjkWC1hPG1lmbijwaIUNwj40\n0swPycY6g8CMnZ74m4LPHGoCA/m+qqB7KzQesQd0mXYZtOtYjzUGMwvbYu8O\n6w15GIf4Vd6cv8NqYTkOuE8LOLsK9AfYyig3voJCdgk+coHUl7VeAxXgC8R+\nnjgZ30opDKrsh+IOM2jgrieoPzfm9eC1tZ/3+rLTQzGVwsNzr/Ui1pWeMkjQ\nJGrLtGYWPv4fW3Z4Iq5708wZPiJifmmYB1Jf/zQqO/1jOCapz/ImcG6N2p7V\nTDZ0rxYOX9dnUxAsQJZA0Pg/QtssAAgBqHdEtq/L+AmglFavLB0RnjcoPxjj\nbX40O6mbqp2PuFmektZXAX+wOYblPle/R2lpZFNIXQraBnJ63mi5yu24gkzr\nHZcNEu4G73Iu/4nal5+LZqwgCFqqTNy97eJ3WseptXZlhFNtX4kMSHjg74p5\n9Ruoh40QcVT0Lcf6qqn4G/GVicCnUNa3kRMGg1EDDlenmuoXkZlRVShPOpe0\noqDtnHW0Fj7X4xUyVfhABxUxAMiQOt7+LIxKcWyY+mG9sxqRaIPnAMsyS0vN\nT3y/\r\n=6YYy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"d86e339511f83d6f23f8722f4d93102c1c18a7df","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.18_1571745560029_0.44596783783186567","host":"s3://npm-registry-packages"}},"0.0.4-qa.19":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.19","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.19","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"bee2018a147e63136976d5e7692a97472ba3f89f","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.19.tgz","fileCount":46,"integrity":"sha512-UTKu+iuRduzrERTfUCevLE49/cQqfJ7vJKV4f3p1pc0yIQcLWcbnpjOhZbhXlU/Nd1kk87CR28MmOMZycCJJPg==","signatures":[{"sig":"MEYCIQCmANblLOEcTOnUtT0/cp3xv8GbTQ0hMMXvFF7VUCrYtgIhAMLHDv2NCgE5aplXX2+Yr9JPqJuvV9LWagCvomIxbByw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":94631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrvbxCRA9TVsSAnZWagAAX2kP/R5dkRkkknlHFIg7CVyE\nbPkHXvbriCrnPcFnypZD4r6C4wzQflo+x8LnVnNTi0avPUFKlqAy+EY60joO\n27wuRObe9eLcLpobRGx+r+/TVpddD79FVSCFEqyTg6S4XFgTxngjfV1yYHQZ\nfYuKbsOKKrM7QQQKiDXO7vcnZiAaq26chXwsa52l3KeO0c4bWyGJtKCSxGf2\nc8wg2oojCk05qN8+xLeOj//AKzz/kEU8yue3qRKM0LH83oUOHwa63nDhiwO6\nW5yETojuPc8yXXyzIdJntWWDsNzV08oxkZoV+aKcC7Ak08VVnKC0yA2yVN8H\n9+MKQVtny+1RFOhsyQiBdhKnu4cyrGqsuDI86Iz5ozRwF70T0WZ9uZwDsV2O\nnM7RgBtM0ymVMt44gpsoGIs3WuJNOWflbOgI4URoftt5/NHeTSQZaoR8HxyE\naqmK32jTjGEFhweLqktvqlBb0Zfm0FIzwxlPO8BFhb5bsuWqdPq1JuNxLR1p\naQ0dhJH9QGDEOXlI92Skv9Tu3k3KHJhKizrTj4hpqCW4BMxLDamNtcwgaX4+\nfLN5Y9tziex6vWdVBqflUX+kLf/YZIVEqa+tE40lhykfZQPwST2y53oEveTf\nmh5xxhbOZr1ohEW49sszY6+wko5DpcyaZ2D9gbnX6fU0gJRIx47HL2P3+ALi\nIyl7\r\n=GnRS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"ade2bf52453f723ba4d8e682979d98ca3aa6555f","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.19_1571747569063_0.7554322437725525","host":"s3://npm-registry-packages"}},"0.0.4-qa.21":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.21","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.21","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"07dbb65aa3814cabd34e0ef2f774d78e4c7c81e5","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.21.tgz","fileCount":46,"integrity":"sha512-RwWImv7fYzZLOThtRNKHHLQvsTfbv/JWqiE+uHO4pHoybH+aJGhnoqhJfOCGUT3K+gTZ8DcjPGEyTEb2N61ucg==","signatures":[{"sig":"MEUCIQCQbRWWyHpXGa6GJSYToB/MSPVjJq7OZKfdLeHQ959PhwIgNMFSswpEoXjTkaNYvav2hzQrnxBXi5PGOFWxdw+9ea0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89771,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsr5bCRA9TVsSAnZWagAAtTsP/RyrtJH5D3auCJIJjZ4g\nE3OeTMrcYti1PrdUehVgPY+vlaZvdmMlEdQsQuKo0kW1WlwP9YIQzjAqRW3x\nmi/9niHZMs7lp7KCfQoE+QL+dvJsrz80uT80yR+TbshYGkbSqAFXU57gw7sg\nLM5X1Ftj/8Z95BosZZK7G89I1lDi6/JeQpjPGRKfuOu2VilX7qCrVHxUs7DZ\n48yM/ZhHPDT1WYjed80XcWpKjHUKDHqnma2CQWNkyqH5BDBbHmuBERYCk0g3\niOtSrSsNxxxAY4kVwopHmtBEmmTLQxhnzJH71vkRr4heXTYgof41MTLO1VMg\ngr6hwKb7mKVabWAoh+unOAi8EIEncMPg+Gs7xgz7VCguNu+R//hFZDrRnZb3\nlvJnD6uhl9CfZjzB+8yuSB6s4yWBm0Y+6DOQU/KH1nZkqgBknCkyRzUJZ1a/\n39yesQoOK0hON4PMdUKmM61+0ig4E6NQAFtPFIeJ+EosS7InGTU9btSzCdVG\njO4GnRnzY82Q41bIYtDdgsdBOMgyFBh3/2YRoqq6ZrMBTD0dX5v9eovGroTz\nZfUHWjkobbKYGMTTifJhKhx80KJqUBEYwbuf6dq8Fx8dn7/jQL9zRp6hP7wR\nvEKPZBEG7CA6CLTBbnbeIrly13Jh1L2WonY0/MUAJ4Wf8fztnjL6B7n8sfPs\nx07x\r\n=L+vf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"c564b111a4d486ce2b0381cf7d8be50377321aff","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.21_1571995226909_0.9651354253495328","host":"s3://npm-registry-packages"}},"0.0.4-qa.22":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.22","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.22","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"22fec8de96f13a3f52660b1ca6d0b1319ab35ed2","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.22.tgz","fileCount":46,"integrity":"sha512-MA+lZzWIfIn2nES9H6GnvaOqyeB21poUva9tPrQF+YIR7/JIk4AGXC3hGdtTBwsZiaLhcbej3es6/I/+f1/RHw==","signatures":[{"sig":"MEUCIQDuJwzBvVZL1+ov7zZdT71Ml2nRAJD2DKQGec8v4h1PIwIgV+rfZqB619kbfaT7Q2uSPPvNeD0CW9yrfpUFhArB+kQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdssGoCRA9TVsSAnZWagAAAIkP+gPwi7grHDnOg9B+KTEF\nqbaHrfI6i8I2Q1jix42KTVZmL5E98Fk3ID0hxccytaM+6HBYCIojdOMSAMsC\n7YZudCP8EdbZjmReL5/NI5FYJ4pYzty9zgdZfFD0jAKZJZOTbXg0TtKyyyYz\ncQas+bc9c92z8cryL/dUdUEWsxU/CH/RJiEVUruXBGclbVcAqjq7lmfhWtWL\nHvQ9fs2wRvq46Fxd/wiageiAXR4OCxRwK3NM9RbuCPsLtIAMN/Kv5q/FVhMf\nkHTqyW6hPmjX/uOqxX3tM2D0NnW4nydE5eIi5CcA7XuhpKi0V8Xg2A/A/HpG\nwbTQ3P6GcTSAdJSucQgi5C6VEZ1OXbd7CRAPQP6+91NpKDwTczjqBrZdMMCR\n9/qK8+9T1G/qW0QUnw31TvUd77fJZnygDjfKuF85UAMBe7YKuQVzR+HfiMVH\nug1dl3+vjYtEmV0Zobyw42oWSGOrv9+WqG6HV6JqmR+pahs3HEpJa1S83fhd\nrDEl9KLQQaUiNhByjuUEn+IBVi8t/jA5pcQ80ootZnCIPUfLludVx96nQcE3\nMgb7OkTrIAWcQ+elTPYMNuDMDeYQm82og7QhcOHD/ZOYLTXkfYQnM5+c0VbN\nQ7xlSiN+DIZCESSIFxXq8CH+BMYkyVDC+sdcZiiTuf7fCazhgfnoebuni//S\nHNYv\r\n=LbNp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"f0dd06a011e4f41b21c77f682dc89ad7dd98b12e","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.22_1571996071723_0.6257764672761585","host":"s3://npm-registry-packages"}},"0.0.4-qa.23":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.23","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.23","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"665f46170c8edc45a84733df0169f68f0c34d4f9","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.23.tgz","fileCount":46,"integrity":"sha512-iov6SGcTeU5rKWK+Wtsp9nQLI+U49wZbrUyVB2B5ULNBuGJuVER7kRrs8bS11mn+09EFKrz7S9zw4L60V+ST9g==","signatures":[{"sig":"MEUCIEQu3M3Z2/UmLO53zBcBIb7ar5df9JvOcaNH06J3CEgBAiEAplljp0YdXXj70+kRZM9jOlMvHfbKiLFU6wQ4pIvxN+k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":89875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdstFQCRA9TVsSAnZWagAA8AoP/Rsw6vGrlwLvIborLngk\nc8SeF7LtZptPH1BPaEtQEzAQZ6khrVHDv+gDUbCF/cO42Ia1wiTRV3P5Qq8v\nCqKEuXpELVW4vEs1++8soqev2upUNfdy76vKeMxVk51Lyyh5A8+ufn46gNSo\nAbLiBTxmkiGEQwseCZoPf2d5OrVvOX9YikSc2Sc0OrHJxEqXfgJRFNqrAmAl\nTseujEzCrgWgsD014QviHNQDdBcuVzSTmgSxkowLQDUMOGU/FggxtU1c4xlp\nOyj1FwuJuBXP63sOBnfJYWtijuRDFaC660O8Z0+lqtnLkEKrosbmaxyyBryH\nC/1rZo0fOaP2N6F2sjeBnV1w0njJlP0ukA6YuDEjzXU9s/moClKN8fjQaOzR\n9diHXwSNcOK5ZEdXu9wXGJwIFC6rG96lzFCMI/U2qeyPtG2eZYphmyVQ1lcs\nr/VqfWCQAP7DpRsFMyww9KdvJfxK4POVV7A2agIej8kNj7O2OBv4CIsBuKh0\nyBKAbuZnmqQ2/zjq7w00YZXbXOLb5ODGEgWqn1pH2minbCNw7RI4GfHTIRsh\nNY83WegaeZEEufPCyRtpk+JCyL/7adzg/Xpw1wh00cF8amGBrE2XYZKzHyjR\n9zIk66BJouEKjNtQ/U8ppeb3qBOW1F17AV7cDxDz17YMnr/D40t6R3KG9SpK\nc/bX\r\n=Nnq/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"ed4d42f0ae254bc57d7e1b067d0a1acd5a2d3378","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.23_1572000080397_0.5214400001101671","host":"s3://npm-registry-packages"}},"0.0.4-qa.24":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.24","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.24","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"48534678e97349a84c362047b2cfd3864551cffb","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.24.tgz","fileCount":46,"integrity":"sha512-8rV+sXkOhB/BvmcIDtTXN+Som+lxBB5wuyAhR+UIpqI6dhaLCNzktxYlqG8+tC9hJK/R1VfhWBo/JUBWliBHbQ==","signatures":[{"sig":"MEUCIE9kUqSUhdcLJDhOB53gLiStmVNwUZaiwaAqczOCdNFzAiEAyuQlfEBjMee2YZh7VRFxfn4ID/v+owFBGKIRoGg37u8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdstKZCRA9TVsSAnZWagAAe+MP/3r7G4RrWDakYsNGXfmX\n0TztJc3jJqlhojXFPF+NfqWx6gKZ3ygYqGQA48IW1Sd/oU0p5fbR8C/BgBbC\nSutTPMhN88uTtFJANEymonzT1aN4y1vn7jFS528K2E/j9HqVPfd/ViohRl22\nGShkg6N1bTc3EbN1jI0kwerM+jGgeO3o3dGCpZuUn7Q1vv2tOBJ2SdHtybb6\nFK1oyQygGdZZPdZll19G7n6XpUiCP5/ao2Tzf4N+lmzR3CXg5VOSF/xKkOBA\nFy2xUhr6O8iuU+f0z5CvsaAXkAPvRoMKIBDDrAx2siTMVKMSZHukj+hYjODe\nvHDzI3EnFekJP/D/LqKsyiMHQ6XqgUh2MfhdMhIHUmqcqBHnOxvDlBpnmfqh\nXYMGkz6cyhLjJAFF+uSfAxn4hWCfxR6qbLgMS+Mc5UbXyYKpT8ZOS5eJhs8M\nydV2+4OpqIMN4jMSzgl19VM5bsmHURQD6BKSwBYX330cthH+4YcML19JmY5Q\n+zdEz6Ox8P+lrttorsVxEbcsD8h/ZrGlG/t0R/yDEgojlVz0OGMMCKDOAUO7\naQDbtA/xX7yFNHEaOCJ0Ef7ymjSKW3ApHxmsHTUioh+QySPc6OjP6g7j0l1f\njO38Mm+3skqCrbmAYdRcuWvZFAsDVL5L46IOOuyq43vzXKUXvGqhoEeJRSs5\n5oR8\r\n=aBrC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"0875d1f7209039e7b2960d90ccc8cc794fece5fb","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.24_1572000409221_0.5843758670649095","host":"s3://npm-registry-packages"}},"0.0.4-qa.25":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.25","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.25","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"ddd57bcd79de68b66fa35bd13e142f56aa8933f3","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.25.tgz","fileCount":46,"integrity":"sha512-r9R2EdJ2KKRABmXjtkZTlHmph3VFjKeDelk1y3SLj1tJqK1ra65qa2YqzyCWKmcbx0+JmQc0+qxyvZswngM6pw==","signatures":[{"sig":"MEQCIEhkLTIgIkkBbQaG1hd3DXOx0vnxGgSW1u4HT392wNvCAiB1RPzxywvwocwlSNGni+Ncomk0VHLWOptinHWD3FiYYg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdstcPCRA9TVsSAnZWagAA5moP/1AffSoBZSJSltr6AAsw\nBlLLkGBZfZpt9NPu7jbeX8hkLc7BwO24eJpPWs2ixlEmnb6jXo6DCVPh+MDr\nM0qc0JlRjB1VcoeG9gFIo7poleDkOK+uGZTnvz5pnO9FqXslMY4Xbr2pug8m\naVgLMMDwSEwqr6V40khMVw6pXbPHW8iiJ9rrnCXm1QfjuVAbWc0jibKtPCf1\n/eT3yYHlOwxjOKOTSJhVdn7QR5KXERPH0gnM7HApZsKPQiJeMJa8Hbho6Daw\nb0AsqPVnO82p88BCxIDeTN1YCFWKfeoHTmUTkEz4F1j+F1Lq6GVC6sI75OLK\nS5pD7PqeqSaiPrQFxhKjP2TOQ7viNHmopJ31oMe7TV79tmvI+JPmXdNQeBqJ\n+B8ET1huHRm7UpaechCR49CfsrDT7iqTyl6wkWskEpvUvXn/5TJ53tDHfomg\nMs9NaSk6FOtV4iQVAVY7c9OT4qeLBTPd/bwvXzFxIYhqWfgxtIrjkc7KM2BI\n4W9+nfD0SeqOpgPte198/XkRzBVe7Mu+3Jt9weEBqSF75PI5VCEeDAQlLY1/\n+BmYdelaY7P4L/x1AC1RNe9RjxkVAkVOTzN5dwHg/UCuJ4keA7EJyFroO4q+\nZ15/KTLrKLENjePW71pGVLT/iVRS5eAoB0TYyduuCAfSULU6jd/H7pfV+8jC\nrnRH\r\n=gcxd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"9668e965f5800dec1d506266eb174abdf8a65189","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.25_1572001550995_0.4476416977352018","host":"s3://npm-registry-packages"}},"0.0.4-qa.26":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.26","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.26","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"fa4d6c0160fc68cfe71ffc51aa44f1dc821e43b7","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.26.tgz","fileCount":46,"integrity":"sha512-nNMEs9I6eF6O1QUUWvVYZib6K2gVRiHkSEAYlyw3tEJjMGB9rYhfRYWfO5FtQ9RYTAmGXWA7Et1YHdxJ9I82LQ==","signatures":[{"sig":"MEYCIQCwGrTmWN5pAM0TK7bTzUBksrF5EnohE2+c2KJADSvjggIhAJl9JjU1kisKVhNr15Q1W0WPvJ5r5jDXPirnBqsjDv2Y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsteACRA9TVsSAnZWagAAaOsQAJ9/ZG/0pxgwoyZTWfmP\nKiZf4+o0n12oMVd9Z6+LUN4bEFkNr5fyoAnLRycefSrnYhCMvazyNWWEU25Y\noM3n+hHWDLDnh+6j2EXtSBsmfo/xAwJ7H9b+4mywwx8vWxkOkTa8m1wn8tN9\nCYSaebvzT7bZTrhdeFfSnMEIxxY5Kks+GNUFuTdMD8Ek6E7rd6hRIW8e8o9s\nQbBR6Ncg8W+QV4ex5a7ei9nh9WeZFPc4L6GL6LujwjwGPWJGbOmN4i+wU95v\nQacryycFU3DQgEh7BESZjwbhraI4OGybmSmNK0Cpzt6kpUAZ150z55Vwncib\nrH0MHK9RV9P/rh8A8SxoBkOq3OR9ViWBOI52bfA3UhZvdnyjcwZhkmEryIC5\nHJhs0485X3wcpO9J8SmHt8UBKnBrlrr2UKH/QJCHsObT+hoXv2I2laQGj3CA\nOCuQW+L4Mj8xQS/+c9i5BZSgG3Y07Xx7BbIKzU55wI8qJfIeo0MvTytXIF57\n2yHr6o20lhoeQ3HPrG+JHtYBAb9FN7fX181rdkqyC+ChRvDpbsIi+u4iqcD7\nnTSo+k7fRU/VlOHgP9j7D/O+8WLr/MQ6eMZqoHmIn8B+7oD7ZNcUPUMZh2Mw\niZ1pWgKG3GCj73KYL1wI1OylAdJCAeGEwNcrOKbyO8W4oqAP6ob5e6RqjaaU\nTnw+\r\n=pvyJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"f71e5ceeccc7245c9a1ee91d0cd1ae07deefa404","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.26_1572001664155_0.899454243048571","host":"s3://npm-registry-packages"}},"0.0.4-qa.27":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.27","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.27","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"5278a241ebdf02283cf4bb74cd56e701f0852cc4","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.27.tgz","fileCount":46,"integrity":"sha512-/gM8BHo4Dtq2BkEHdMyTRS1vYIRmOuBiLa6Tc37EoKS6g40lLNpQbuiepViSjTTqqpQpAMMFqF05TVLJfTaEzA==","signatures":[{"sig":"MEYCIQDCnFPpUxfj/qpnotKOGclZ70LJUc34LAJCb3/4P1SeRwIhAJaLEr2gtOvaNaHvToMD7u5+x+oira6MF79jM3Z6hdfP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdstovCRA9TVsSAnZWagAA6+4P/0EB6or+Onq7gky+72cM\nm0hh3VjTmkBuqXCro4abvrHhuFRStyHkKKYxr5CAHArTqW6DV685UBcxCnMg\n+F9wkBEkKu83irSRnhQroVZ0KcqWVK9gMdWc+8cRwTarHTfabQSGWovXU2uI\n3OqJncYv3ayX/XPVsoMKWzacT+UwUzrIHABvfPNE2rG/+TEIXlUP7wlCKWbj\nqG5LKdFDVQiRnM72apBgc9bsoyH3IV7b89iKaXAN+S1uViQF+x2HHy09nzzY\ni00TOOV93QaM8uj/T5arv/CyTN0gtIBglKOGSqqO2u2RyTgDVrW1BJMqT1M3\naMnIDYwQ1bvFrTw67tiOS0sN/i4Bbao/oQ11dBYkbVgzvOHMPihLjfx0d5Z6\n38lbKQDX5KPra5kgDXwt7lkI3WgRJfiXHx+BsdORhgyghxehBuTeAu+yS+Fs\nuYsxJGrWg2k2oYWZdidiZDjLXSEt2pVqgEPB4lYGqOxcMqWQIwEerMmE4Oml\ns4X8S8bAEGQhvr8cVUzS5HD9O34ION+PKzsal+jPw8KRy/qeyW7gc7TOxE8I\nMekfv6xwJ1ErVJ8gcFQ1A03xULXG1lwArx7/0q/FovM+SnXnhjl3m/5AfA/B\nqnLeRO9bSfVgkUjDbXZr4KDgqyhDQO/oitn0mmW+2F9cyfghpnNg9cB+fawp\neoxL\r\n=zFVf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"a54ba3332d847091a625ece014272f40186ed8ae","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.27_1572002350851_0.9265308861414601","host":"s3://npm-registry-packages"}},"0.0.4-qa.28":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.28","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.28","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"be82667b0c8a44ab3c9073d439e535d4b101e4f0","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.28.tgz","fileCount":46,"integrity":"sha512-97DgsBVmQzPwvO4Rjto9m3jj5K8uFoo9aOkPcu31LIKcXqQVw8ZcJc6nIFj0Oz2Ab8TSmP7FNXWOndtDjjyWyQ==","signatures":[{"sig":"MEYCIQCpBBbtkNZ9zcjoTFw9ZTCzqzWsYNSXx21MYbGz+GfvDAIhAKuwvZWygguqchEIQgGwYXOKDATzopngCbtSaowTUsEZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdstrRCRA9TVsSAnZWagAACJoQAIyc2G2eLkgVWbZWhP55\n6GN0HB+Fp7mv0TYe8V+0oznSEQ4qXnM2vG0rxe8jO6fHQnIv1FgzzdfJDk8B\nQ+oAyX20H2x9+MgPQhIIqlk9cl4tqspQr8L9udgzdIFE2Gy4t1PBgFSx7RKq\nz5cVAiqDAtzrGNp193VDOLVDJ3BNdszebpcnBpE4SHZYAgdOX5ohJOF7xwvf\n4xslaIX4EWEjwnxswFFqAqiWLZ2e6xWfJ3dwinBlNOiz146ts/ltoTIKYACt\nb4U8YGVGbFKHHoHOr1MKykKeDkgM0JEDvFhrfDQGCOschN077DAVH3NPmD/f\nEycwGAs6RMVrSOVeA1yW1bFs0mRCsGaPwe5UFQFFrqbuViuPKE9A/cBGlYN1\nkyELfw4FGg25sGhoHGA8PPpZlF46CsOfaYtvu11dP05IHD4hxVaBrr2HL4ct\nAJsnmX5oWyxZwPL/zYY3ajrVUCIv5n1YEslctdMtyPsuTyo3L8aVsnG/gRNR\nytO3+KgKnh6BUBNZypNnGRen49a8tD3Z7T48xMmjVkAzNmAXlTvYafQCpRxe\nI07ss+4LWtER1xjbleAoKJqnEnFLiBgJ3ykJVU5i89I9bcCh/+p5vaCNm+Jl\nAZwiMjUfmEfiaauBO88aepw3z/QO+DHislZ4ZSzChqsz2s8v/sfu40aQ5Ss6\nb/Lp\r\n=tbSy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"d0bd93bf433d232b421ce52c476d384410c65673","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.28_1572002512668_0.7681021135688164","host":"s3://npm-registry-packages"}},"0.0.4-qa.29":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.29","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.29","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"0ce4c6e48079f91ab05303da6f1bf94b30308388","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.29.tgz","fileCount":46,"integrity":"sha512-U0FiwoDLGG6RqP63If7Z5GQTTtRxugOxmOoD2cgLDN+9/gCj/n3RgNyAVlrzXqwH/zUMnxclqW0ghidLnUQZHA==","signatures":[{"sig":"MEYCIQDEEAThrVGPSDUwyE4X3CZRjH2GZqJxv3hW7cfl58c2jwIhAP/4c2Do++lNQeFrmF3i4LCDPSq6k00YWxnnQR19N/6q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdstteCRA9TVsSAnZWagAAj84P/2TNTpbH7NZvTpgQOLUD\nvSo0tEKNstDttA7Cbyu5USH/x2813Tmjsp+35RtQ8D4L0NUMxu1LHc1Um/0y\njvL6zfMMZ8CypFWcOlpfTp/g8K+Kjv7eQe9Yc3rb1T1YCz5tmhd7DI8yzHXl\neJudDoBjUuuH7t3C8x1CMEML7otJo9gb/KmnPsoiNfNWOP5W28Xhzpd2UbrA\n9nzkJEn3+xPCIlAwAUNHtgqQaio5UqiMZRrU+YYhIKB0WaBeP6Fsy0OM7huC\nH/HdtIgsZadEMbNFypXBpOfHf1kr8xdMRumSEiKLD9cnfDnRrU08xa0IEtWT\n9y8foOc3bZL5XIRITve13Fi3K6P83zXQRrB604SDhtEgVIb59Xc40gaCJN+e\nLd5AOIKSWkzBJpZn6gmLfaDXxfBJwgeeQeDJXxoCRWA40TZU/NGB1kkrNDrN\njVveNqfW5EV1JpjexWzujlsUMQeaxm6gqAGqmODs7dwIuoLi6Kvpbs3zJLeT\nZW/dmUycAuagaMgyr/Vn7TJWrH8tHdTDr5TB+c4N6g0aQNDPSsiFj/zdFp1e\nAQGmMcgsdpzf0R6XWeF2t/hA0a/IkBmehqlixTKkMt/xuQdtiL6+ztJ3+NKF\nMxV7z1uJFDLiUi+jJ+yZGwB6/16OGGUBbwHZQje52LP4o3tcftCTByLp+FNJ\nMbh2\r\n=rz9j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"1188130ef78c477844b450942a1730744ecf1ccc","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.29_1572002653821_0.6709942252874379","host":"s3://npm-registry-packages"}},"0.0.4-qa.30":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.30","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.30","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"70398098c3575cd882ec2add50c2721bc6bec614","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.30.tgz","fileCount":47,"integrity":"sha512-z167cxAh+W2tx57idVrokw8AcJE6FVm/WB3wWRvCsPWvIrFEZV2w0Mbk/WqK+FrjqL0fYTmi99xbI16oszOoyw==","signatures":[{"sig":"MEYCIQDzpmLFPRJUwUU+p9lKNqXETklShqRoc16sE2vhgmyJhAIhAMY6r6Uqd3Ze8r59gx4WGw+NGMVNUl4Nvse9vkBYfMRL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":102031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdst7rCRA9TVsSAnZWagAAD/8P/0vxZ5usfswNi4Of0HQ4\nWYsomcO1VW0fLdqJ/Ithk57HDLp47RCl76kMt1w62xqAk1rPeyZAamCRyNj5\nx+LlAhJpv+8gFy5vbYZlol0IL3+eF87iUG12rLk3RC752z1MY6bGTHrT1Jpu\nLLthY8XBMQwo/iWckBUll6aSVOQXMOisftP+6tIWy3srIyKQD8d058vrRLkN\nZTu/eKhva/f0xShviHGvHztR+IiuEwVKtE8vhxZyujwmqOVFHtzYprOaMWIz\nv6w1VWyNsqHeG+f1sCtFa0sY9jUTln86K9czyRtMkNzV6vku74g213ggI1Ds\nKBTAzWmC5oV6YABEKUeVoNJhZmnYLbZkdTxbzMNt76pNRn0KQpv5687qq1Ff\nPAkVuscHJaewRRHL5gHObHCEj/BLCAvZX+2061mKcRgRCRz+GrkqhUz5snub\nPobMAcRd+GgrgkG3jxSY5huHwLcqpiPt6fQHZCp5u/6iYBWL4gXCKiUxySVt\nRy5NGCiflNH95yIGi0KdHNSaZYeVCLIjNJqaF7wjj/wdihMynur3keW6vKUy\ngxa0bXRKDkJ0tshHinnIegmRRge36CPuXjREiKZF8dejPBmJzOEnwi7zdabZ\nVkA7pvEQkhVsKcJAsuP7tKOo/nNwK+o+O1HP0v29ORlG0WU7AcoFd6q5rAd0\nB1S4\r\n=lOHB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"84974b6522362c938a86bb6bf2fad0b02d350e53","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.30_1572003562758_0.2723151257904495","host":"s3://npm-registry-packages"}},"0.0.4-qa.31":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.31","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.31","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"6df9f4b0eb9a7985494ae9a305b46b5e0c5a7f5f","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.31.tgz","fileCount":47,"integrity":"sha512-zd8Pt1eCDYZEiiPrkFr7P749z6cwji6Lz5jdla3QI0+4hXu0AIG9864Tb2dmHk60ZtCg9hpBfAuLPdZgL/Aq3w==","signatures":[{"sig":"MEUCIH5t/3ES31Woep6nd/ji8mq2Q73FCqSx91w/DeDix8VFAiEAlwi8KkwShFYXwOzj2KHRl+r28DHoTRWMjOQ19ZwAEaI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":102306,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsuw7CRA9TVsSAnZWagAAOhIP/2bzTr7Mxp84Ptsoel7t\nhiIXE0EDNNm+AVUyoahpC/3UDVo9953EU5i2Oy8TnCkt37+NXaAqwF1aIwXU\nlFZo8UgGbAfUrv2Hcve1JMBbqkJI4n6ITGaAUyOMf9f4zYAMc/2gN5yJ5iXO\nYTlBQNZ8scQHmCBeRj/tec+LiU1wU/m08D0bJVZAHG1S2rxIA1j0L/VvNZv/\nrxMpJdfvSHbt9KpvAqNpjQ7IxTAuCXFFiJ4qyS6eBjVWC3iJFl/nTpRxz3f7\n5TzdHL/0wZAvWLzYuG/n+FPqiZf8D5XcL4oddxkbuMDc9LYh2AdoYZPGCMph\nLboq/QHmJ1IHWPcNsXt3ctg+DRxIibwcn0mxB4J4Z4Nvv1e5qgECL88ehOpN\ncxi9FidalQxS8KVLgJTLWMQt0zCWDLNuAv8D8rR5Lkuh0Xk5BSiJwCxndpqB\n1y8Yk1vT/cK3YQw6NgIMJ87PkuM/PAfmiqfZTqIPggNp8UzCjwMKNq4h2Rix\nAnCc0K0rDmvTLmLAKznca+zOfvc3NBbpSKN0RQFxkamtZXgNlhxKEvXvaipm\nTiHCh5XrEskzoe2QI6PIgpbzG9yLOMz5Pcr90ZDvDWdD/n61qiqcTpu1Z7cH\n1xaU4muxQIwbYd/tF4n0BfkVYKOakz4Fb+t9NZVRyEfOexTWfVbER2mTRnpb\n7FI6\r\n=W57H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"d2e83d305e4a93c993fe922924a3d7b6f38a5c7e","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.31_1572006970999_0.34525941520130576","host":"s3://npm-registry-packages"}},"0.0.4-qa.32":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.32","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.32","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"98aad1fe29b68051d7bace04ee7692ca076d51e5","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.32.tgz","fileCount":47,"integrity":"sha512-S6F4FsxN0jXs2Q5wOQ4geYLiOuN/ByF0m9kbE35ARFL4566K7RZC2yiL3UpuK0K1CV8k2WEhaKByzHswvOAfYw==","signatures":[{"sig":"MEQCIG9MO1dyVbP6yyPd2noSLoe9GTf2VE2FDPE+x2Srb0wfAiBdW+jpV7y5caHkNr7TJkAqFaggfM2jp+HrHCJY6dkm7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":102796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsvDyCRA9TVsSAnZWagAAaxkP/1DZ4HX+zl+D6VNoaXGC\n5NXQUx2VOzpkknupsRG4apQG3OIbcHjd9ZxQ3R3dT7vhbywYLL2DlaJyOYHT\n0134NAIbIH3UcMC1LaliLyvizCw8KApYqpG/os80pyBxGE2nB3+qoij4pmWM\nzZrB50nB/lDLUUgAPUWh2qWVlUgRAlgL2pg/8KdpcUVGjPezSc8w8EhzkEmq\n/zRfND8XEYhwOL6JnLhGPW5an0ZKHE36wDfjP5boaGc7h/MN369fM6tq19t0\nUqhYO+tYDY+l/PQZJA3giqczt1woAejltfpDP/5pds9m93gSvftOWMo2c5Aa\nmuwtRVKqZ6Jg5s0O5dD3o6fZhOZtvQjIjjWR2jCTpZvLIo6YJpJstWx3SjSP\nAmjCQuyMH8L1OZIraKnpIb1zV9sA5iEX6WkX9CEh+DadHZ57QpPr7yNON/eZ\nmJSwa0RAhZAjsmQbnTQhN08Nbn2ooSkvRKc4Ujl+GGF/g0ZDqDR6XrKY9iNE\nsiudvJBAOF3DlvhlEPSV8Fuig0FZIM41IsmkuKRmRD6U+pED+ZQRoyD8GXwT\nXHzcGMg6Z6BiN0rX38BJXm7kOA/qtbQN1r/pP03tD6K5Cy5kDpZ3WAac7VSu\niWdvv0Anm7XdYK4/O5bYKRZzhcTe3nH+MZIKMN93cwUnS5BBZCJOfVqMMtiR\n4+Gt\r\n=P+Mq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"4dbaedaa636424241eeccb19b3266fe2e175f6a3","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.32_1572008178509_0.0048607530592919","host":"s3://npm-registry-packages"}},"0.0.4-qa.33":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.33","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.33","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"6df2a5b4d2277e8f646d5053a45be41427f6eeff","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.33.tgz","fileCount":47,"integrity":"sha512-x6TAmz7NEAmq7PzreO523b5zx9JTUxcJcraHpRIBnnBS5Jnsdu7Fw/80QBxJP2avc/dFhcw7ewuQmL2mILbSXA==","signatures":[{"sig":"MEYCIQDIoOyzA23hOmJLZCAmawfhmTc7Y+SdXYpT7qWYo8FVlQIhAJG4958xFHtY1cIEnZLEygWNHKIaxNR0FxEiL380AO0n","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":105526,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduAuOCRA9TVsSAnZWagAAcIcP/1v8bTbWeBNuCIXS4I4W\nja7Df1cGj2BZvLiAkGQ+ebqxEzdGskXo/4jaS7rylOgP+/sR6X54UfYkhY12\nk6w7IuvWGD66DgEIkjpRtjWa4pP6KqWxi0SIl+k+diL42rCmaczcUmhzt6Sb\nVF4wf31qLlkNenZRC+Ri9fcvVMbMXQO7hwtCj8j9VfNg8HaGXBetRMbhbIYh\nRnIbJg+QGXEclSGoKeT1LKUbgotiWQaL/ZAtJzg/A98nCEZ2Wz9WYbVaO4wO\nTkI4uFC3c7SMA8UFF9ObxbsL5jT0DRyY1zzqq/5Fu6NG86+Pl6BJCXNMfynL\nRQBpqXBthiJIOpbl+ZHZgm1ezBBC4B7DUrrqexmFw09/GMt3zQWEdW9SSJR5\nwqAdF3BbJJMN4dml9yLZgHub4xLQ0/vwmYOKTSJ8t2kUMmpd/wmVGbj/giZS\nhPLhmromfLxKGansIIDmvyoLXSYFkEMp9bOh8qU/MLEIW3tXt2ge2+2XPlBD\nDLdmmGMDFVU++6N1Lfb0xZeKZxaAvhSUUshKarCGxwwcvhkHSvNA4CiPupJ6\nqh/hLDeMrPwjYMZdZXND2/3qDdOn/yJDNaG0yfDy0kV6vwy4ptGYlhYUSREK\nN22WLb4xZWKVxhcLJ+/eA47t1eaEiswXnvc8wGWnJq9FJ3ehIrnwzmTwMuue\n7Wea\r\n=+usB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"c34053f43763f4e8df14ce1b580d7105cfb739b0","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.33_1572342670106_0.5261412822175384","host":"s3://npm-registry-packages"}},"0.0.4-qa.34":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.34","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.34","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"6ab03a34ab3be08f537930170706f374236c9b28","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.34.tgz","fileCount":47,"integrity":"sha512-gK9hGRl//Mcm7b/fhLyiJwRfMI4T4R72ONX6fNQfzpIvgCi2MSIGlCop1+fk9+wHsi6s+2nkWOtL5qu0sEDNOg==","signatures":[{"sig":"MEQCIBhok5thaoQuB2fMVEGIiJcn8Fu/IrooMwXMss/IPqW1AiARWkaw+EqaVEwaPXs93IHmC3cWXKZdqnbVMGI/sVPNsQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":105704,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduA0+CRA9TVsSAnZWagAAWxsP/iLj4FnWI6HzewemVyMK\ny+b9hGmuFCv7wyyeaZBDw7JbTbKi4R5lgVHT3yKlpyR+XD/va/YeOsMCS3VH\nL8txT9MYjVB3Ij5gShbZrE5yia3xVKSPW0h7BvuVR7xeZfzxm+YdtTrEewbZ\nEUhDEZV66D9OncsbOF4xSg5Veune5/F02cq+PxgSFuBD/eHK7p9vSDdhYghi\nButfzlWEaMuxFoLHkBlp58hINVL4IBjxJ+WmZ4b4hP4pp77v7jVwRK53be6y\nlEwVpW/RZZT6XRmv6WW47GvVrNLk7AFZufdi27klnNP2Dces2dioLAjFrmTv\nGyCH9fQsoH1zTwEOOedgkbEvuAYd1+xFKCTatOznHETT96Ods0JOBpmC8uKW\n1/ebi+VLrp1OZacDgjA1aO4xvdvn7pZEsz+iOwrev3rUMciyc/9cY2BHiKws\nHIES4W9HGaUp0sZGoq4P0N3ln4NaALhVIKqSQJk2vGdqBASza/xZxZrM6CJR\nXlF1SE8oeCf27amp/Nb7Z+fO7Hrp38g2wExZLXCTUTcFhQMV8g0TBmYUSLle\npvRHapEiuwsbXppzGMEFVSzf4yAzZuvac3rxHEh0HUS1dRdR3qs5siHfki2m\n4uIxMjj3sp11b6YkBZuU3sgR3ZqtT7ax3Crya7yvjVZ/HHweJxvAPYnMe/Iz\naK4f\r\n=y0+t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"cb4de66a2f816e447c47067cd6797cbd0f45da82","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.34_1572343102051_0.3665064970916345","host":"s3://npm-registry-packages"}},"0.0.4-qa.35":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.35","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.35","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"c253822f012abb01a162bfdf70e3b408cc3c3bec","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.35.tgz","fileCount":47,"integrity":"sha512-kWpPmvNRxyoFbVV3ies0kRjR1bgyrqT1NVBQHQaF+cqHr2YAGtiJ0KnEckYrAGi4heWLQrD4uzWtpPqqxoJX7A==","signatures":[{"sig":"MEQCIBKGW0/yB2NTQJeouvUu4K5SeCt2IpkWiC284qnhRKcfAiBanycWrIXivDK7KD7nc1+siEPD5gaHhjf2X9d+RR/uXQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107317,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduA7wCRA9TVsSAnZWagAAF7YP/A9PEDDN1ZxECQW1R7+W\nhpCPi0/0NGnvSNuFYLYoz8eS12rLYfyfIP2vC/TXVBz2FzNshJIoIaVW690Y\nPzKrvKNLO0e6nVpnfrVDrrHdKJDtfoaNccmNwiXd4nR0e7pF+ZU+M3NYsTwd\nKG9fhTxBmXmSiuUPQqkGhD0Egzcpwww2X89H990lnv4kT3ui+nSrn6Uc+bwq\nBMG8b5VaGo65DxM3vA6YfWpmmsxnIFjRHT+0smCBLaOYu6JCJkIBrejQKElE\ndmGoTKFtCoa+BYs7+ht6YrChc/10T3c4mU7YMl0DlV6LgJfxmIewQomxf2yU\n6iQ/JzlijS41s9TWApt9vd3pJGAQkTX8WlLneY0XaEeDpdE/QEeSwrO67Azu\n2H3cQk71J9qAEO+6EPWcPeKZvoWVUfUPBwYDqZeI3I9Yj2PuDJ/yJWhu46UB\nVFX4HAx6L5JASH9L8756mLUvyPHzSHsGwH4VDWGAZJ01F2T6nqvprdUK2FYI\ny7N/JKlAHkmbc/jAKTyTnYbIfFIchu08nmnGERXszOcFC2ecmF/jkQqx4fu9\n7vxTXgkvnkvUnwDp4HPjhn9Fwa1Emz6WZ5BTdf2OofkVeksL4ZzV+m/SmmGK\nMKHulhMSVcMblLH7grbFixaKS+NWIPg1PnnWdLRqpu2LJQPincXAdy289m9a\nkqVz\r\n=LewA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"0ed1ddd0773878d8d0c0571879efe8471276a5cd","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.35_1572343536300_0.5575303720367151","host":"s3://npm-registry-packages"}},"0.0.4-qa.36":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.36","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.36","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"e88349e6d0bdc3ce7f8b823bd01d23f08f31e635","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.36.tgz","fileCount":47,"integrity":"sha512-9NyaRHDSOkdTKkivo70c5gjb/EnseZRtj0ZB9ssbcdutV1sVSDQfmyAc49vpwlFMwFCmxVSa/mXmSNDurQ+4tw==","signatures":[{"sig":"MEQCIDvAgTGzLTZ4irpU2GBm6zgUkwDF3ZekQqlNMlB+lJtDAiAvQis6kQw26a/OXDr0U1WVAaoT8wzT393YU2TRSaiO5w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107444,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduBFcCRA9TVsSAnZWagAAXBsQAJDkl9/A6zUyHv81cBqO\nFU+7B9ed2zMqLBzBOdmhot9+Dj23AEfbrZlzzviqFD3BVf530ElbwRSggAJ9\nRIdg9mdxeSratH+V2o/oKub86P8zhhc5L1cqI4MXFx5zQHSbrYL4UKT0SdQX\n6mP10BbVzgeHdQtxNK5zEIBvwFMGqae6QGAFF6D8I/w39EKDiCS7FxAEj2SZ\nQpfqQReuwyaTx3lSfMRA6natwatvF3yvnJ46ZK/sZn1okxHlTopLx1FqF9EA\nJ8xTpfR8pMI/AnlhCV1bXgiOZmGoLJcpMI1MHZ0vxi4+iDfNz+dVWFoqjO1d\nhpNEA8kOWyUWUfb7FP0SeY+mjNOImFxrNQP8A7KrOfSIVgSFDBbEMi/j9WL6\nHz7YDP8EIGLksSe56k6CKBBCrzBfMliEmjzwf2zt8wOf7xcnAX0dJNhfsz69\nqyV7/jIYNUtotmRKI1K2re4Heb3Q9RxpBXxPGs+Z26JZISxZSePdgQCuCh5b\nWY56INoY2vxIF6m11iPBBvUt8WfQCkfv7wrPDTOdAXBo3B2UbfKzs34BR5GR\nzF6GYhbsnUnNDpoktHCZDBTJZS3W4Qf4mLlXYoPlfQ+wLgNPhjLLfx4xKyk2\nhOJ6BlDMqpzpr3C6RVtMRKb5AL8JoGQY3HMR7Z4rDQtHQSiTlKeSWEN0yB8Q\nb6BC\r\n=KxWY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"0d0acc5603cc491b084c4ef969243420dc03dc33","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.36_1572344156370_0.7061644472735389","host":"s3://npm-registry-packages"}},"0.0.4-qa.37":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.37","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.37","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"83e2e670b64d17f2bf10a300747f1c798d959409","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.37.tgz","fileCount":47,"integrity":"sha512-5OlPVa2d55TY1/4db7MJkqN9yipVanRw2Tu1hAuZqL4hCu9YftbYqjvjAxYDHzp/dzAjKyL/CZ1C5DfvVHDglA==","signatures":[{"sig":"MEQCICeql2VflNUXecAfwWjPcZ+xIFA6psKnkUbWngLH/QQwAiBQIHwOiZZW1AAKDZdGuIKsYYaDWviCqXCJwdYDv1ZP0Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduBdgCRA9TVsSAnZWagAAxeoQAJwuAZ6hWZ4HI2mcnjxJ\nG4bsyG15cOM14GuavyL48HVlsqp7Lo2XG1bk2rH/ITxo9l2EMPnG/I02LXpz\n6aWpjG+RccXrj+Cna+W269U8nU6fHn8WpeSZZyOA/EBpXVr8N8JEt5ibvXhU\nE8BM+7pFOm53O3EQ7Fdoye1AUFWQY08MmGWJeTUIEqkW7l9IMsHn8c6XLqJv\nMh3m5czw5SK4kTprPkZnLgLjYTWLxjeGkubZxxz2VicL9Rwo2gJ5H/fCxIh9\nFqNQezdMUVnNpAzRkljMjgD4y+WUG2MCHaoVssevZrkSrawArqki0TVDi7JZ\ngRETQ08YesruSWk+gJuUS07abvMy9IgJmu/tZYlG4OmXS151m6Q0gHoGant0\nEPEPGxQSkVWQW6ogGexyA3E7mVY3ynaXjrIb6RqMGZvgmY2elN4rGQQI9G6d\nbFn+3al0S3tW9cja9iWLWaWVzo9aNmnlpZUk9YioN8fcRJJiHA39TdJrJQ88\nEKVrL4eAefrm/hqLlXHLmC82bOGtl43oWinswoZXfYV+B2U9GDK8fBvZZ4dj\n+LyPDnPWeH3JCIt5SXeLa7Ql5hRdzTVmo+nUOVUvPcAIu7T9HLOir+xPZsiI\nqZyABAQk5qMFz7k8iY8OEqzVtwRWYO3VNTHGmi3GheuHJFe/bV+9aSutq1dV\nFBav\r\n=jKoL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"73554c818be4cb0e09e5a77e67c50f6b1e411d92","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.37_1572345695771_0.38012015113837583","host":"s3://npm-registry-packages"}},"0.0.4-qa.38":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.38","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.38","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"05762d7866c63ec09ce48da62a23fa3c0a769620","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.38.tgz","fileCount":47,"integrity":"sha512-bAteLTCmAQsLqhKEafv8Vzwqx6AlvNxQGAT1ShAJPFc56LTNcfkesCAi81fcb9Z6xqDjlC3DP+UQH1J1+kYLYg==","signatures":[{"sig":"MEQCICNK+Rw7+nHdkduiRp/K/2wYWsW/fdYtyzZjyWRwwx30AiBfi1I4Bz28Oj8RvuEhsgpM1e5c6eCXqKkSZbH0BfQHyQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduCv/CRA9TVsSAnZWagAAweQP/15HQ72yZHXXlrCijvoH\n13RUPT3N/blQZcexVaaVs/JJUE6EQd519e03kdk4Gs1ZUgJlgg75RvXcyG47\nQ17MjNoXf98rkybELPSiElfuH5G5BbAlHwfd51IVzqavsRJu2oTXSAYmQrMH\n8OEH1BtIl4CsQ3rEtju/FrfxwcVddx0IcHK1uXZHWP0A3oFWgjbXb0zcA++6\nr0t1Ym6dJqpReE6uQUYywfZBMEZD5EPgt5Qr2urtyy3HBxEw8NZftoAohvBT\nr6F4R+/l2U4EADVpUb9XC/v4LL+4E+6Ys6Cp5naG9VlJKe+1zflKI5BTbMu9\nzh2zVOEot6dtQAVNYk//v6e/FvNe3otMWsOfrda7foX5Nr7O0gGGt1LPxIu2\nrc45KzJSKzD4cFXEobIn2zwaSAcJDwuUxPgPlqVSNEY+iD0GMc3PdYhxEM9W\ni9YXBUP9OLDeqeREASFMMo8ekMo82y/+9c8PobfehU2dQbiMWDncFR8rM9BR\ni3pjIlqRALhNpdPKcfb7UKdteRRexwRRtvI6NoOYfaMcwpOZWcAzxG03Tjs5\n6y+C0/ZohjleM6JcautPCMXLZqplvgJD/a49qvurL31Hl9GDI3SpJhxR+plH\nZGEJU1RHcV6OX+D5LUoufTHKAQucnSBs5S4RjCqLYz70eXNceBKzMRSvOiT6\n6CPU\r\n=Mlwk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"e3e0ea00327349574292878de3a78e7cb8d42214","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.38_1572350975038_0.7568383168612394","host":"s3://npm-registry-packages"}},"0.0.4-qa.39":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.39","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.39","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"4429f266c2b102f9621422ff28171a37adc9859f","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.39.tgz","fileCount":47,"integrity":"sha512-jq38sbw9l8NcTalK3/Yc9WWeMYbzsgF9eN58/OHfY106d4R8Yc3IDron7ajhXO66oDTKfsKgkyk2Iom89DdBlg==","signatures":[{"sig":"MEUCIBcrsvINM7jXzctiTr6VA0d444i1KEGJQHHa5qrFVIKwAiEAmzL/6e/Cd2bq8RM2alkepk4pcwDbR3Qj8LloRf/X7Bc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110757,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduC+WCRA9TVsSAnZWagAA1o4QAKDGlcZhI9n3+czn6bs1\nXnIJ2demTuDi7IO3Iky1jJ4xvZhVGF2wHQYXM7cDf5wC8sSptdzIFGeYfktV\nbd528HHszkq+sQrJ5vhEx9wJbjfRS2Y65ZSmKem8oD8VCmIYfLsAVU4i6XBY\ncaHr1d185DIovz/YSMON+reZ9RUT3e5WBQ41FsaRYL81Q3dgoASgsgHZzXiT\nWizoV/SXcK9CzGP37RT9atBe4k/hx/vbEt5NEsZXs9+t/pCmt+oBSyjrzBzY\nBMhTuLK/nJceBKlch1gogtbk/raPqKmIak+KpqdiFJQtIKV5YV8IaDFDKZWj\ni5wkxbAhEUcbCIuETGXiMTXktYWSJp5jSm/r+fzMVOX6YXPE+O3lOuIqI+2T\npcCQYj8BsasEVE4ZrH3lT61dWVyg/oMO6JKnc9RP8cIM03/qllFqkoA3JYEn\nq/3upjP1TUJKvcqUNtssZCJd2UBiSGBRN+qi3A+MYMx6VoHweRR/m8kMnKIZ\nHY3FzNUgQw5zcPrKHpn4UOhmkpoXj2gooKOfx4oEABxSyvWdLE0xvID+bV3e\n40zJRlehLBV3OUlS73wjgKoxgDVYxQvPYMu4alrMWbk1bECo5al1B5X0I1Jn\ngnKAHqwFSzOb/wcFdudZBO1jKlKHzhn2CU1/+qz9P0M4NYHgRAqJyOl4VqOD\nl4sB\r\n=+Y+v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"740f1d0df290bd95838bd2bf115aa8e021404c7a","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.39_1572351893926_0.3128852760577523","host":"s3://npm-registry-packages"}},"0.0.4-qa.40":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.40","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.40","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"27ffc94a0583ed055c4f92fcf110ec52857b29ef","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.40.tgz","fileCount":47,"integrity":"sha512-3ie9mKzKYhXcaFIJZUJ53p1m6qSaOyZUJWf30oM/ejWWR2c3BIN2/VLHmGF0+rac2R7I3119IwXyLmnKFwg6xQ==","signatures":[{"sig":"MEQCIFp11o/zhL7FXWJuvDsm6jfPMhnrkZWC8/0EyWOXt7kgAiAE3g9l7QHC7X9k2Fhoh0q7YilwpdyFLCFXZzjJ809jOA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110933,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduDOtCRA9TVsSAnZWagAABKIP/1ntCY9r/bWtGLUZsUNU\nQ8cT0AZJvicg/2lfzAy1ggXFd8w4YtcaZS8sZWMGFiksrI18D0L4Wg03hbd1\nX6DuZh5MypjiZIHNYN3XdkbMYW3yoH50kN/fc6LSnRnMqmhr34s7K0b8qyiO\nIUDxM9hjfe69ICkOHao2MIqDGf/6zRWD/O/zRzjMo9kZWe9Ge+kEt74+4QTY\nLOQ/hS8emf3f1lU0TYJS50R1zMuviU8R1Ti6Q68qvyhpXha+o/fkCw+ILvJi\n6hrjWhidJ62dO7mf1HyN210EZyLlfangJ1jd2KnLtXEjVPymcGeYuLeButc9\nqiBvRSpkDOw9TjLgmrqXQUtbIx45fbtO+p9+e7x3mpWgpkI+dW/XBuVLDXDl\nUnHyOhcmNaPy6JhstIifdLoNAQnLTt/vjpN6VqqaUXLsjEz19LZp/1DfC9PU\ns+VzNS/4id222vTD1uRI4oLVtGFmROY/6QP8sKnCjYCI4Rox0UW13xSMYlsO\n3+mLK7wgNaept1kW8fc9bVcnbhw/6OG4PDsOD4R7PLTVt3Krgg/nH622WSsq\n9cv7aXxzgG8plXlBBhWVHZCW2MFwRnxO4YsbUOwPPfi8QfN1XiWu5bgWROkw\nPrhuEYN58te7eO0lQMfcuQeKJeRfPniMe+ZRdV/rBv4eQ7VqaiRpHxocSvQF\nLUi9\r\n=vxGQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"6d830efed0403a68126bbdb945e2a6ad9542a5e0","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.40_1572352940893_0.06936761667541558","host":"s3://npm-registry-packages"}},"0.0.4-qa.41":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.41","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.41","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"b4cc90d06efb4aeeae3aa065f0439e35619e4d1a","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.41.tgz","fileCount":47,"integrity":"sha512-wrEaRqZiMqHzd/6hTo+UpYPZEXDr1wtvYzh8ksFEj3k48oDbRXeUmXhruf+Fk7zTFQ9U3zwxtpqrg2DE5tMAjw==","signatures":[{"sig":"MEUCIGwnHAaslYDLj0kJWt5zVGD9xJ8tbh3ShmzMwS+2F0IbAiEAmKXp57sxoCsvjqcceguDLG2cqzbmB0+gbHYTlp5gPos=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduDX+CRA9TVsSAnZWagAAxykP/3lvvMVdPgmY0HlYrnpA\ngqkNL1kOXzXYg2RbB7/JNXhiiqycRT9Ve/VECJkiZZbDENhstr7lUQGGzMvU\nHHIw9IYhkuP95YO0t63Yk24QejJErU53GQ0oM4py5vw4874bio/k2YHANG8+\nymxwn4IUJMNGGqOTO+D41PdYUQKGydArdV1guwunTjUz6tqgc27BqzI+2mJx\npgVr6Pyv9lpMoRyY9PR+TE5SWNraGQ+74hfI+v9LzhKzIjOaeUgl7D6SGS80\n1wOXBiKFn1Seochlk2wbCqzMRtS4+QQYzsYNH/FF32YaEArynZwhynHoJi9/\nLrlJRqmH0kSZkJ4AvR8GR5K7cGBFFHM83hGpwnGFthad+BcmSREo6uYyxvff\nq75J5+r4o2+jNFA7jiX0wHnMkbIdgs83WXguC4pO/bDT4BMSKQxU3YYZMCrD\nkJLJQbS8Kq3MAi/NooVgtTLHEASr/Tmp+uzJT0iGbcwhvtRXRZUkaNpz2zEG\nQhZ05rrgdEjthuxhtR+8wSjsxTZIQhpPW0JstuotZ2ygxgX5H8M5vfkpkYfw\nbgJJm+oPWDSsJ55cIgOugsmH6cIYhmS8PMZ4WsUD8roEd59n9K0xAgr62T6u\nX8qXpO1IwRQxflCVrFkWNUVl2aHb9YKz4mksZNn9wXwQD69gJ2/7zOnKQtad\nndHt\r\n=BrCz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"bf9925bff100579b34e4f9b920d0f5f6e674320a","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.41_1572353534433_0.24485498028718844","host":"s3://npm-registry-packages"}},"0.0.4-qa.42":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.42","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.42","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"7f545488d38c8c701d7554ca796ba885160565cc","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.42.tgz","fileCount":47,"integrity":"sha512-yj+XHABHQvT2FUMFORoQCHBC6YKioeF+SCdarqMJxfV7qfALCDvC2Dm5D1ZFOaPNTgrCLeN5XKJEh7+b0DdZqA==","signatures":[{"sig":"MEQCIDVI2Oxd4Y8U95wfaenu4LI6czrmjdWQ7yBM7zIDFSa3AiAPS6m6uL9LrwPqPF6izM1c7U/cz+i57dsVei7SLaxJlQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduEjhCRA9TVsSAnZWagAADqoP/3LXb6iB+zhsXkcV9QDA\nWmdtEiVPKB/rcnRw1PjrOJSdwfKsEnqkX8Z9ECHVM+Gx8e0bujFOHfrp8pBm\n65so18LvU3EG00UBNCV35MPKq2mERpihRsBRQEovSAK9MUijrc4KGeMzBeY2\nGlgiituJKSSeVeSX/xD8ncLYmIze8Z7las647yF2OX/w5CVuCdV9saKNWAI5\nOplcU9L9W5gHvephz/eQXTgqEgOwuwmkk+bSv34inIeR6Te3Fii3trlapXYQ\nhfOPqVmTR7BT+zSchksSSE4wmc9YkJ0LTmbsvVgf57PwedIOEUSDHq5hVztP\nU1bgWfDJTWKnQsLYfJbhy7d/eO77KmnM2D75ow1BmFAiIDQ71ATZgg9tLZ8d\nE0ShUL/x/v9hpvfXsIGrERawesNNjufSCiKTaKvQRegExTtlflxNAT0bQdfL\ngoCB6z1G5BrpqPBWcKJyUZPA9W4n+j3LKFWn+nYpE30gf3EIjrZ0j7l+h25b\nKM0h716kblVNip4pfyz5L0Z1daao8jY0CNqoHjAzW0dZsn3U2bFf4kCC6s8Y\nOPdWj5+/YFmpSEDaBGGQAGdLx0OpuWgSJQ9ua9m/XRvGcTM4hRPxHO1+lPDj\nXs7Jc7EFvBpPPycdbXUBoN4Af6bZqRzO+iCy/QmHoSpVX454Sc3S4lmjx6Zf\nFXet\r\n=sqjj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"4743c05c6d7d409f0d30bb030732b4ccb6588b9b","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.42_1572358368603_0.48975534297941636","host":"s3://npm-registry-packages"}},"0.0.4-qa.43":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.43","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.43","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"11ac97f2d01beb34d694edfa055f4b330b58cb18","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.43.tgz","fileCount":47,"integrity":"sha512-xFcIHwNst/+q1h4zqe6zt7bzR4lVnnrWyvZa8XYyFdxkdJkw87Be59yYVN2agMotJ5tz8WaVT1D7xXLZ9tPJZg==","signatures":[{"sig":"MEUCIHoiFhMxeJfqzXZrgr2lyi70SFShmVf/DFf3VLNulrU0AiEA2KauMrrlTGNOL14vo2+8uHiY8RpBx+KxeA2MgCZseEc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduFOPCRA9TVsSAnZWagAAmVEP/RPACPmemBQN0mSbwbIW\n84lFYhhVX3zh1+SGvDON8vHGdXC61KBD3SwRo3qtXgOAW9ZZ8w/zO1GGr4SD\nj/Pxqn0MoO0BFErr2ALmKeyxtzsAIruK+oaeoxp59Q6xA17fkwA5MddG4yN7\nOhc/SdzbYhI3csqyUFGUfidTKjOgNkZ/TK7qSCPWWNhvsayh45v2AwCbpZkN\nsVZ2pRXS26hZX2cYXXatVXaHKc103D21lskh9Zv2Dt9+u4c/KT+WI+c8kx4Z\nT5szm7Y+erk++BNqTVLJdwthsajb20K0K8dqqXnmB7ysYSXTR6o24O6FRUdf\n61oq0/ZwBbYtaJUsdkiJDxko2q/d37ROUyLV/Tmd/jbO/mGvogCQ4lFxMzTH\nCEwlcZsBj4Csk7lv22VV6LZERpIt0EMj7c+dT5wNbbDeEu0axR/MOCnVXIra\njlw6FImWdlat8NIuLJ82+xRREKoZBREbTxHpy8FNkYihKlytRl47zxEo5Uq2\nQlJ+vQXWM63LnIZXxAgvH+tW8yDRBv88/MnHYQFECF5ZvG1UIKI6CRc0OZab\nY9uacIFY2HvlqwMJG8Ni3JI7NPUHGea7p3yKOZGyzMk/Dx6NoVitM8yghxj0\nS5jsJgllIEHZ9ylx/r2+jpoKCoI5ofxb/QsuBIU2tPwGOQ+EcfXOOFHsg1bA\nzUTq\r\n=wcjD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"900affa58f57c58e9dfede6075b31c2cd19388d4","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.43_1572361102694_0.5311227522749045","host":"s3://npm-registry-packages"}},"0.0.4-qa.44":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.44","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.44","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"35ec80ffa53a8ae3278dd91390f6425fb855e506","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.44.tgz","fileCount":47,"integrity":"sha512-LCq0qcUpX+neIVm9rAQXC0i+u9jTljKxslOWHHeCZjTqO1V+RnQbXATDm5t1u21zLnCt1BWxmgcjOrrCPkD1sA==","signatures":[{"sig":"MEUCIQDAfX42crFvUwLVt+LppByOFZYVt7XEG1mOkOuPhZox3wIgEPMrp+1s+XgsmDucU1QXDIBCZ486zFIV4kOE975Q3A4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduGJKCRA9TVsSAnZWagAAyGIQAKEfNOs7XGrFIvCt/i30\nZ3vsTFpG0671u3vb4HxVsioe0vwSn7MpaczaFIzdfxZldijEv7le66fYpeqs\nODIHXMNsBAu1Ief9GJLaX6/drC/AcGtGf1VmbK3fgwk6UZz1gGvp10k8ldVr\neTaESwIr9p+FdNCVFUvMG7TaTdak+Sdc3gmwvzTDMaKdJngpvJ5GrbV5d4Zk\nUQi+fvajx5ZZWV/F9GcC832ej/aIgbygHebYOLryx7IBcnpwV/l56cHGL6ek\ncaNYgj+2gGW2ljRg16y6iH8bdpninbZx5jFOu+vXgxubVCrAlBVIfjY5OmkQ\ndRC3aR/WCrbhiQL4r+gIkoBPjFr1YFav79OtlcDRV07y2eVLmZXktooNQST1\nS5H2Iv7tPlLn+RAt/vjTAq8drc0MS4NGIUsywfok5WA5crYQAId/LkP0XTI3\nHpa5JbQZb6n40wTjOTMRIYUbH+oPjC5arU/1S2YNzPKiB/kPG5WHgJcQN4bI\nSJ3ltQmC+ikwgGU13x+9Vhk4ZMhWIaPFa3OdBBKzcW0UL0uP7xZalEOmoWMP\n6TwNT/TatHqpEEEYx43nU+iBWA9/oXVyKHU86a5MYKwN6B994M3ozqmWYrpS\n1TpJhXZOJU5hjcXSPkZLIeVqrxyPHAXYaGLLS61IzzuTl98KXR8vQz6Nsw8g\n4Vbp\r\n=IzSy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"3fb55d9463bf403952b64b5b74a7739303a36db3","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.44_1572364874216_0.34462293423132473","host":"s3://npm-registry-packages"}},"0.0.4-qa.45":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.45","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.45","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"eabeec3650b15ef4a95fbfd1b9c24332136c5229","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.45.tgz","fileCount":47,"integrity":"sha512-864ZI3ckF7tPvQUgZLNpsFdTbwWaNs4dF+NwLzjA8/RUg/bx2Z+QFFKyClgHe1bRYTo7xpD6DWubrwuhtIWyUw==","signatures":[{"sig":"MEYCIQCiOQ+fCFgDx3lv7iC3dro4a68nE+jFc6OHrYlKeoMGAgIhAJ2lZGmtAi9oUhrdw26bAahdn0weCjDAnQA2rIgs1uuD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":112086,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduU6KCRA9TVsSAnZWagAAmrcP/RBeNn3vooj9UhvSx0eI\n60SLmRQmdipLLNOJWDjcBQTfgRedRb4aWZDsJe+gg/d7rRhdeoWaTe+EjJzS\n9iEC6+K+HpgTA3szIx6G6iS1KSeosHQK0Q4drvJYdHlAKbfe8w76pvmXMN1d\nrQHz9fOXm3nAykdedSsXbR83d5uYMGCtQeCuivBmAkYiKCAbmJ+4HthFqk/v\nErawKZcbkVszTyAn5C5UmLEWBTUu4G5rAGHd0kiukWrv037oVcx5e/anf3es\nAdJoDqcstADInXshl+9aGBbR2yjY7B7EPTJkV8+RgF1up2Fumickk7F1WMS6\nFvzfcF+1iQDF7Btv5udaQS5aWyA0TmRv/RNsAEw3ojWU77z+s8xbVrJfNqlD\n1dEgqTjGWfHQrUHGntElSoVrtWWSwuw43eYFr25mRtro2NzugYly1e8ONYZQ\nWsHtyZoCPkuWWOfjtK4uhmZadbCrnwehPy4x3ofHvcWwNcY7fTAY3TBUCNuq\nCLNX2iNg2WqhZIiR1Vef2bHg+ztt1lyJH8W/k5M4A183av/0cRUuzJ2uPyzY\npiPzAaXdMH0W9KDu3nmyIl1nRSpKfovRSYZgRK/vASoBH5bLRbztG1j1hkXX\ntiuL2C89R4Q8YHwZPSHFFtqL3lIaIZSeqzJpgk4ekRZb5LeqoCAluMWT6WT+\nFLTe\r\n=g+gQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"e94c565da5fd940e447159388ff922931c315ce1","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.45_1572425352518_0.6875077933193376","host":"s3://npm-registry-packages"}},"0.0.4-qa.46":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.46","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.46","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"aa1361c2169fd83f5eead62bac78dc0b13b2014a","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.46.tgz","fileCount":47,"integrity":"sha512-byH2Gq75e5PaHK9/Q+1b9DzzjOYGCyamS9ssS8giikhyJZOk6937Dt0zmlGPPOKTnWdHj4AqLtyn6E3Huwz6sw==","signatures":[{"sig":"MEUCIDVxwM/bsmihTrzwfsqpXRf88wzQaohHurmq0v0tVC+vAiEAtDUl/DtBL1pCB9Fr6DX7f+gxyYXCEAPmuRM4qtnq5M0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":112189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduVqRCRA9TVsSAnZWagAABtoQAIzRCxAouKIHEYNGjFaF\npcvCZFS3RH56uPw6OuphOO6QOGhkDsQJDsEUKPbJ79YgsAAqfK3tRzz1bsgl\nQ8NUgTBp5L/QvQqFqJ0FgdTR0DbzYbnDvTpID59nXLsfvwPtlwAsaIOgMomD\npj8/xGgu/SyEHjeJoPADIb1I9BIKB4GD8KIdFoHHmYcnqkBOSqm5Kaxro31n\nNjBdayHUWOGlVWg54Dja5jR4FRHGgvX5ex8ciVPfqa4Z/U0jUA1MGSFgzbyZ\nAVrpiVC/t2J/+zfbfSc8mFEMvziqdZeHgkTf8xFhD/R7PFMN0CV1S5biM37P\nKZBc489wn5OUSn8STmYXhw15D+SJYWsBvr3PoVXsDXo01nrthrBOfjATuWXh\n/lM5ef3onPaRsO9pCDUxyoGknm4addA522BIJU9XzlOsB8b2TnDFPJvFx1YK\nE6jip3qfKbqzpLkSvcOqTrcaDcy91KcMTUf+eR2j/WUvAR1skOHFz9BDl+lk\nGXmSnh+waiuOdmyIMxbH33+JTtCyXgGQ5KMD2v7/T+18qneYSEkPmPhyOndl\n2YF0MfLi9VjqnXjl9jgdXBoYVlKtu6MopJD4v5ohenVlDrOCYr5v7fmwsBqB\novTV/j6vL0AQaObnqI9ujfv0TCvuWlFvsN3on2TkP4649j4Ie/qxKSnCOXQl\nFq86\r\n=nV2E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"61eaf26f9f336fd95417a943816b2332fe2d0030","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.46_1572428432725_0.4556182099214525","host":"s3://npm-registry-packages"}},"0.0.4-qa.47":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.47","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.47","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"80b119dc18505da137ef661eb9f9c07018734f3e","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.47.tgz","fileCount":49,"integrity":"sha512-OVag+8zCL5HAEWDxlIqrNjUn6iD7U1onU+lB0pzRuLFklJevWIDzlki3W3haw0kKNZ3+tADrr7vXpzqu7GIxJQ==","signatures":[{"sig":"MEUCIQDCiETclA6gLLGyvK8B1yKbXSVl0qz+AA2Id3giO4iHwQIgYj8T+Ohew1bZLhtmR+LBtPOyC/PxJIOQ5m8ADNvQfDQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98873,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0pVeCRA9TVsSAnZWagAAe58P/2YtaASg8LnaiavKA5sW\nLMGZen2ZbtbszoaWhfQVbvc8f0KoYe3UvMt5vGdQlgTGZc2E0aHjiZHmE6EU\nkzMHNLsvarleYzON+izFlFHIKCpvXhT4ARRRUMF9hejk7pg8I8REica7SDzz\nYeWbTxRbqw5FAo/wiGkFc/K/1pvKeFihHgL43wfOviI5YUj9TW+GPA9gDaRU\naCfz73LOQpuclwTrvfVjfYv5P7FzQ2P95gVw0uUMvsyn4yPfMkobxMTDBNbJ\nXaq5/nYwsdL7QZg1A2zRMDy9V0Mzyy9GdwyYjY8OiFwF8NPfH4Y1N9b2YGkd\n1sNPeCPhW7BSchsQ7lzz7mueJuKMx/dZlWSEdS8fq41NRuqpaHDGtYt2JSck\nUOiFIfWq11EL705Cy8SKE1hWyogtkBNaEucM3G+1y0QbacB2BaVkEiSSF0Sx\nI00UUlqw9XJHTIKkY0NMV8KZo1G1zMEI6s8aC3z59o1uv5kauPsNjJfj7bEr\n5Syma0J1TTa+6Yu9yFk4vBO9hHFp5XzrKCZaL2gDWlNOXVofLxQBMiPJdrHr\nwveTIOzs3uDlYZ1woFFj6kVZgYfiUl+ukqxLOyBlRw87pw9TEUo2Fhyn37yg\n0/F4e58BR5IAF7SEkViXile1gQgkME8lMO15Nk+6/UxXU1DXnKhZYik4+rUG\nKUVc\r\n=TBGo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"ef458538647df03092bd8b8206e693842d636b9b","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.47_1574081886351_0.6908804345307777","host":"s3://npm-registry-packages"}},"0.0.4-qa.48":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.48","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.48","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"84e24356e84e0a10bf95fd5354b08823c387dfe5","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.48.tgz","fileCount":49,"integrity":"sha512-9fcL+iOuqRVNTi9N0S9bUR1Y+EaeJfSwPqRhG1otxoZZ7veZNd2MDtzDMPTAKKB38HcNXcXJnFg1cM/oFNKFDg==","signatures":[{"sig":"MEUCIFdH+KDNKVMU4fwFb0uBlkcsKL8vnfiyE1RQnAIKBFoiAiEAhlgPh3ONi8Endr0UgXorVSJ/wJg/cst8uMOrfmAwwl0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0prMCRA9TVsSAnZWagAAsd4P/jMPjtT6mllbe2VYQipi\njJUOA9AeY3VLPj3pp785HTOv0U8Sloxs1bXIrkUVPU9RALkfMT4OaZAIGLXf\nR8c+5IL+zsYMNHx1Hr3KKQA6MbO2t7BIcVvp65W4pQ01H8oTLhx/OlOrBDSa\nKJ1BlpBCs8p9oO8dhpMrl3ujKo+/upnJK0RX+X59iXWWa3g6ofwtnyJLnb7+\nDkWue6lORrdMLv4gUc0VwBriuCIADtakGNd9HH89tAh9GiIjPfkhdhJCRtqS\ndQsQtT8OG+hB6QFRnIPdgJvsojvobL25u8519f2nKnXbHaVVxHlz4Z8qs9tK\n3ae3GsoAP9ZtDY0TIPghJy73N9GzBRM1PIUTUdTR6FIAOG4xrg6Re/euG8Gu\n4v2O4xG/wIRRaEzufh3xecp+ACqOc9NcCKF1CB6MSWsdi8vpJbaJtEjCburi\n23GhDnFZTVv3x3XDcMbaEbFMs5xtszZTJNtFUT9YNYp3pOqC6gMWaBxR6HYy\nLcU9zB987O2+wLiX9CZrnZkwx24sED/827wgiLUvluBz6LEYqT6ZaJ26pzSW\ntAstXaG5SkYlJqwgwA7mPUd9hNJk3E56hvc0nzn5TayZOZsMDps6AfLe31DO\n25xRKHKml+7mDIjIahO2Ukr0TSUVQ0uYaha4RV2H1aRZRHmT4VM3g/VnKyiZ\np9fJ\r\n=Cthd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"ede79e8152ef8c312bcad4f236f6c2adeed60816","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.48_1574083276046_0.10514379831543952","host":"s3://npm-registry-packages"}},"0.0.4-qa.49":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.49","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.49","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"657591fccac9d5000d528cd1c026b37eeda139ad","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.49.tgz","fileCount":49,"integrity":"sha512-H5dP/yPLyUBxfa8TlnsO7wfmpEmGDtPB89/VXTNrvX9dBMcbSY+Wx8MQ0Mt67ir7TWLA4PqEL20cA9/Sx4ncew==","signatures":[{"sig":"MEYCIQCoZRakkPwgjI8fvPDhhhVFFHLQ+Fkr/1VwGj8AYx/FXwIhAKoGhB3M1yR2M52lNEGWThhS0M1pB7tiJcPCMPCcoX9h","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0p13CRA9TVsSAnZWagAAo5kP/RKxdTnj7WiLa6cHRhWQ\n9RjNd2XPCgB45l7dMA0uPkQtoyFCqmjE+wJ8t5eY/JNG59oK6tzyEmg9X/OX\nhVeP95BIpkSV656kWuHcR3foSgKRxmU31qsA0qqwwmCaGOEiJA0yo3eQqXZb\nN0BONNrl7R0adXXzObEGo4HJc6ErxHk6R8M8hD5m+tdHyB5mHn0lAeL3bkgr\nguzEFzAOVOBNnAE3l3jQSYFGd7HHi8lJQsx3GjsutxOdcv+tl/5AwAQjfNLD\n80NsylMIo4DJdMjsFntzaGikkOZKTAlJlr6nAFg9TlbxOu9BrtSJ+2Oulzf/\nBLO1RoacmngcI8CaQeGdjBo6GxkK00rC6Ur9pIErHh33Lwy1uwoD1wYJVulx\nLVosIeAXc6qMWEcSNcUQK2dxXJnLFOJVnkuhr1QCpdCb7Gz32ZDnSJXIFB8V\nuzToAm8BzDuvBb9Pej3kiTRE8c97Db7h1Ol6eGdnRfDHsApo8xy35ofYizFR\nHVfrTEYLCLrdwxneKe0kwwNDSNfbIms13s3Xvmp3XwFrJxu+4Iwb5dUHiarJ\n7AwVXjBXg0f0zi5salqaT4g4t+3GmnXKoIAg2ZL941A4zYNnlXgfft+n3aQL\nCkt1vefaU4Fcm/vlsUeQYVvafLYkCJusqUMNs+uQCaOan5B6fIi0g2R9coWn\n/sR1\r\n=85kt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"0ebea12cfda316f5c7eecf1d51b98d993adcced3","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.49_1574083958710_0.45657085185668045","host":"s3://npm-registry-packages"}},"0.0.4-qa.50":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.50","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.50","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"eca645f47769246b525f29b8be50ed81df3cbdf3","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.50.tgz","fileCount":49,"integrity":"sha512-+J73FcENmzpG9vymjCBxtOcLrbMcgtSR775kUIX4iz5PUTiAbbWX2K3jlOv+K7jSLbUUpmmDszTwOUKEMy6ecA==","signatures":[{"sig":"MEYCIQCIMYuvB5lKNgqRzvlN+H61yew5wvkw9a0ygYcOirn5MQIhALj8XhMAp1twlHDr1zcXNeUtH0w2DHMac5cBE7JWqEmz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97572,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0qFGCRA9TVsSAnZWagAAyEQP/RvxwEma2U0f1KqvtYWH\nDchP46s5qtYEnujVVDbNbLmemvdFwgYkHsxpYzLGZAilTc8n8Xzpi9pUz+XR\nkkzVzerF/U80VlxK+MChVyJ3t+A+5gdjmUPP4auMfe0BhHEVPCIPcm+KpmdH\nzUHjf2TOg1sw3TQ4Q/nraDrmrbKkjCN0b+Cre5tlAbWbmKviBoXr3HW0iPTf\nDd6DO6RvdXbFuKJYejiJAWjp+i0E6B7JWvn9GIzBS3Ys1ehvhTh4F+ynlRO+\nCFwtZ1ue05rJkXX+qFTbkKKcwlQsuVMwXKBrp+CybqIO1OA+RE+Vj3fnDEQM\n23lrdYQX9XSh1sj+6YtN902RPCxlNQtDjGPilH2yEM0656W75XcAcQQVH8a6\nfQZIvobC4SG5tiA19TKRMDuwTG/uVSUXlxujnWH8adSBDxjVJfPeyNhkEEA8\naDdJUv4w+w6xlXYI2PJJCiahsdkyLEo+JNN78uEiMXKAcojAZiyH2LMklBpK\nTCJcpBm6NyLLG2Cvo+iPs4gln0+73mtjFwZ7cA6J8AIoFCAgNDC+iZUmGP7b\nSK9IS+P520AXtzbbGHpn8wULHleIXTNSYjnqL+WuCWeRKLpGm4t2hhhzg6g+\nAZ0tODfbBPSFxCtcSBCUCOlbvXeXUs2CbD8VnW7EXsNZln2Ram5fhlUd59SG\nx95V\r\n=KYXK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"ba46cd722b629cc55dbd223b9e2a521bd186d0db","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.50_1574084934338_0.3838883833618638","host":"s3://npm-registry-packages"}},"0.0.4-qa.51":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.51","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.51","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"5f923c4075b57af105ce569b50d62fd90fdad690","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.51.tgz","fileCount":49,"integrity":"sha512-wX3DSRVpFIxSt1tvrTNHlfOEO7D57YgJpcNTd4Z2ZKlEaoEIZmVm9rkxLaYzR/9/7PJMIIa8FulM2Pg1IOQ9WA==","signatures":[{"sig":"MEUCIDGQamiYnLCuB2WCCXTpGSD+bAYQYv77hI+X2qoKcSLoAiEA0ivaMri46QRQ8YgKAOikoQLAShuOF3stE/cJioNTkhY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0qcwCRA9TVsSAnZWagAAjcQQAJDMIbkQB6QOB1qh4L2E\npGayDtI8m2Tn086oT9TkI6X3CBSugIZi7B9mZq3YoMaH65GBVSzqJqjnvvne\nR72Run+JCf16+USEPMEPqscgtIqyZ8OLYeQN46z14raIT5rSHrOb7KwpuwNc\nz1+kOtbd+3AJsRBxYEqj9IIPB2j/QWSJyXZt+fjZ0jm2BZk3u5zBryyrqQGG\n/IOzXjregqEvFIhd9zwEix62l4ZaiNRvOh2I9HwigD9owDDoMQ4jSPB8qz0Q\nfck4boRoy+sptg9bKFhlPIG9SiVNKiEyjciP1rrbezPef6VrdTzvqXR5VPdr\nWzxpAQlnYRv14d4pU5GvIFRwxIYslLx4iSzHcSRq4j1xGHsr0c5ZxsmU2kZo\n9n86e07Qxr3yo0VmK5ZlNHpsiOde0H1QP1IzIjxGBJWoDH8S7i67MWqmuu9F\nbqRFibd68ajJKth/PoJutblMOPhGMEeT9ftnDNirMdAOJOh0gdFC6xeF8fP7\nt8XIQByIJHT1N4W16bfFoH8Uf0cY+RUBeTlbNWYD+OqPAMK88y6udkGAL2Uw\nfI0IvPFV2GM8Rf1hWmfmWK2duR1LD0ecALBK3UyYvk/Uo2MBxnRv8bWX98cT\nLIXKPbzH6lLCu2Zt12tlIQsVIajD2cUbVpOBO/wmXG0IHi+gLQd+q/JDmm5f\nvj0O\r\n=vOuB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"07129ecfe37e472c53bc223bf9ec8fada2859762","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.51_1574086447560_0.5884875443496778","host":"s3://npm-registry-packages"}},"0.0.4-qa.52":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.52","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.52","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"e6223821b0b6666c4b0454a6ff138ff8611e591f","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.52.tgz","fileCount":49,"integrity":"sha512-xtthP1fAoRgEAYSclowFEZ0toVMq1YYQ6TXzSSDspaqjOChHHx0bAb1vnzpukQ5kDPv1niEaxVWXoqZHaWlV5A==","signatures":[{"sig":"MEUCIBBah2RhkSdEsRD+We7fmXGJmqSYbJtAxZS5dAIwLfnzAiEAm0bHXK0K1VSBQsUO9q9gPXeOt75PMU9IjPPvs7gkFrk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0qj+CRA9TVsSAnZWagAAbdUP/2c2+q9vvxl5mK3t35ro\n4n2YcnBIUhvValiyJzDdaxeOFue54+Jvyd2T44z8Bs7f7Fs0cABFEld5Pbfj\nhYI5XfKFIWJ6uBS1vIOXMq2i1dCWxoXXR4IgSeVquTlD8aaEjPhdERBAeb/F\nFKLaBFCm76aZf+m/WPNuBEqeCUa7uYHGN9nFKG0ySsjSoedihd4drdpLMUBJ\nRFcDv+NFuaiUQCvl9I4rydW/xzScXy8fHOC/Vh+LToDXeW6PRovUnQJHr7ON\nHD738IT+tZVZ16CJG5+EdP2ynycnKZ57sTCacq04Hh727w0L2Gfvz24wBXNq\nfDRwk+wdUjYObJEBzBd9sQexxxcDIhjGyjuu2DJtmLG9ioCqMunLemHML1cE\njViWDlIUNDebn04hpZahetleo3gnQfBrueV51GrAnF/XxgJCGQKr7Ee3+5Qk\n4ZTM6HvGSDVl0L/CnF8cGD1hMGJ+s4G6VrS/aD6b+m26OcYqmUTgmT58/5Zd\nZpcDR2xSZm5zD3K5IVxx06/BkC7r3Q9DXwarDDvAOiG7C4WgMs89QNH3F+FL\niZ/HVRXojGSMEddLYcT0cXc4uDFxF/8NtSXvNAHVCqAmtNFn6+91dL/T36f1\noXgm8ZIT2BOvDycJ8wbVQ1Po2N8dgor0kiBkFRPn6uk0PQCSfsT1BiBHuBGp\noMc9\r\n=htSi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"e64a02d6af5a03c679147d92a49ddedc8bba0dac","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.52_1574086910320_0.9050151333877308","host":"s3://npm-registry-packages"}},"0.0.4-qa.53":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.53","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.53","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"aa2c0131290d2f4bb45af01df907e744982caa64","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.53.tgz","fileCount":49,"integrity":"sha512-bQFG8wZNiAY7ZgeCWaXxpV/qXLkjledltUBa/RQyRA4l/jox3S8M0hUyEM0oY28Ub5/lQHITIqdzuETidP74Wg==","signatures":[{"sig":"MEUCIEFWYO7yymWA2esHjmSU+eTKUrEg8TyBEfs2L3Yl+n1iAiEAtf0OaICoAacNFWmKoubA5+EoASnBftrBRcCF7cUp3t4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0q6QCRA9TVsSAnZWagAAojYQAJjjrBK+fBjK8nhzRO+k\nD9jNBvwC7127NR4b3JOynSXHDI9M4NYfBExQaU1qBJEfXUn5VEJ6PRAuISCN\nlfEImeFlAszfzDN9MV+AbAKzWiMVdZcjKcg1iGDDXuSxL2kZD4QvhcdQgvu4\nqhzUKPQzX0rZ/TS+cKlovoKTglMpmP0GRIB9LwSEld0kbfIrYkHnaSRQPpyT\nHf6TvbC5ym8d7d/oo7TTID28PCEYTwVP2HmQbdkdxIo7u72acC4AydGXvo7G\ndI32Z2VBJLLQoRA8ZFTcbEMxRuxJYUCUvMWKN7uKgmB4gvG4gCqLVR0UQTmX\nr8mcHbx7v7QGUaTsQuORLv1dBHEDL/+ENaSx4wq+VvA68s+1LOm4lwrWZIZ1\nVYLuAwObhPIHX82bAQqLF+JbBG4WJI8/569h6/5XEb5h3Jszg98qDka+nzc2\nU9EbDjjkB4kTxeipclqUoJEoPHqwbBg2YdOTQTbNvi4NlP4Tm3So1ltN3MW1\nfeOi5Y1rCZD1jG5qhdcTXlyIbnVKwv1ggU+9Wzyy88xl4lgFg7CQuwN3MA49\nYM7T6F3i4AwYGOmvwCFs8BQ8aXodOrs/D/VUU3qWyvNczNgDYtBeoTnaKCGs\nd3272KFgDPqVi+tP5GcCDM355aNi0c8MJAp1QSQRgSJlD6/tUQmWTpxxA+VQ\nh7HM\r\n=4e9V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"3d5d43d18940f086cd070748396321bad2effc82","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.53_1574088336116_0.37292543317019633","host":"s3://npm-registry-packages"}},"0.0.4-qa.54":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.54","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.54","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"1f0bfd92655fb39e54d424d01ef20b842cd0bccd","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.54.tgz","fileCount":49,"integrity":"sha512-xhS24YunwBx+YIO0dRfXX1E2itMUM0BwQiNo6cwpC0HUtZNFJ65us538xD1LYwGnZfcVvSKJCJ2WeCG+YYMf5Q==","signatures":[{"sig":"MEUCIFLNAljxOZLLsdcJXvqFWngN/W0rpWAmDVrA46v1bB/WAiEAnbom0r5AgSR2tSFiCywKn1qsyyfS3pWPhg90fB++gIg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0rDnCRA9TVsSAnZWagAAvcYQAJRLSegzSd7Igd1om/DL\n2dzaUIBS/exQyr8ksZuNPsfyhzoH0PBwGdru0MNhqAcaD0O2r/+hJ5vWrkZE\naML5J52xCcViEq28BoiTce2uQO43iZcbzHquRrWDCsf02+o12xyARbJbKSF4\npuZ8z+pdMZ5/DIXjAYQVjgzWtAeBwHFZqr8U1QxZtriOXjiDd06tccuqf3ft\nhMABINRlTNA8CKW/haZhn0cLnpP/gNrHArXKXG96Iq+boEsjF4zpwSYZSfPb\ns8aigc6Uw84sdGW1b+jaY4TtV+NiVbXTo/T3VmlUiptTfyK9Jj6N4ieSTmz8\n8EMB2yFVZVgh4TyZupiOmlHUZyw2yyv4mDCWeardYq/pzq8QMUvO5pB53iBI\nQBLsTz6Ew4cIZUPxmd32JAS2c7k64YxtoZZJqyWMzpYJwUUHIK8z3NUy0Wmj\nLm6q/LFyTpLusyXvrtXCEZokeafPpMNBa8iHoRaNVIHLMgmQOW6Wb3tiFDJy\ngin2SqzdglSUIMjnj2fX6A3ZAi9n12DxIJa1KCoZyZXVpeC7oi1HZoHWbbDF\nHPsDYGP1NYzGMdMlO6RlAQrMTI+m7JRTdJxf9kCHFFHk3FJTTdnv5oK+ma7A\nK//yg7znqM2JQSjyqszx1LPBn6ZckfgPg6OjIPyASHooDFtnPH+wipw2+Fxi\nqC0r\r\n=uyRG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"da20a76e113142b69ca2e97d269ebed75fc41b9c","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.54_1574088934529_0.8595282146499685","host":"s3://npm-registry-packages"}},"0.0.4-qa.55":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.55","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.55","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"3c8f8437b59e36b2249c4e0c9b82940abecb6602","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.55.tgz","fileCount":49,"integrity":"sha512-DiP6tH1Ry2rUiT3awSlk0LeTWhcsnZafQchFnE0Yy7cSsf1lueYGQw/WsT0bbV072Tv3Pzs17UWJPJVxEucoag==","signatures":[{"sig":"MEUCIQCqlHItE9v+4jKfjmxg11lE+eRmVGFxOfnMwpmk4BuAIAIgAQSLmGOW0ATPfYuh2/B9pzxrGeQY+6JE6vlAoguzDJU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0rIwCRA9TVsSAnZWagAAwW8P/jmToMCOTH6ApuR+lIUO\nHax7XZTswTuAa9SlRm32YsmUQdKl6hc742sl/p0LzzObWwydV2ou86T1EqBI\nLuhnwUdJ3V3uL9Cg5YwT6o3wvPsRlV1UoR10ldOC3xYz1YC64qgQBBYHnOCY\nZ5k1bgr8ug4vwWWGH8mwRRgt43Prz9LuGFghQrMDmtpZomiV6iNUprfHlDVV\nucb/dPbMOQgcYKWrg34zDzshtyqIkViATe/eXxl7czjraVsEgWuKUDTS86ei\nBHfEYvahdHPIWv6q6cmOWdffj/xRKDZ9S5tCgiB2O9T+Ugb887tmf2rE7JJZ\nNs2CpiEfSRF1/luGpxeb+sxyqn27wlCo7rgjkcTLWbbaOwnXSP34TBRMr3ZP\nJRWZaqcwctrZ3wj7YNYA9RfN14pVqMRvn+QcRz4UgXQ1dYgKNO7JU9jrCfyW\nK8tfmANWkjegohkXZrxielOhQjWJR5bchMqvUu1CphlRqppdij19N8xlJq84\nw5aYxxt8OHIyyRePItUwe6QWmAaaBAV6QxiqMgoSQFMuc1L6rWWRirDsndAE\ng10lO4L4lULVNLuIb6dl0HTVYNHyJP1aApXdiojVNH3Ff9st2kxhotR4fIQG\nWbbOq1IO0aXNTxDl8dTvfWGfrXpMsMuTC2ZW2lPoJYPr1xY23qZ+wnMW2KfI\ntcRF\r\n=oGb8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"e299ed7abf7fc02f0db31b8ecab6e5ee353414ad","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.55_1574089264173_0.09621354942563975","host":"s3://npm-registry-packages"}},"0.0.4-qa.56":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.56","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.56","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"f80c15549b0f5ece8a0510af9f9661d1979655ce","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.56.tgz","fileCount":49,"integrity":"sha512-RS4n5lkB4YTntSINr7B4PPksiPFcSQKysYc5pvEJUSnGp2XwdvleVPnUHnV7m9bIqrqTE9SrNALAwRKaMWm1jA==","signatures":[{"sig":"MEQCIEGBOFcc+SUkiIiB+meFv9acWOoCB1Pjx9bfqZEkz56eAiBdmMpqp7lTmoe+gRCQSGbWckYK5wtwFhJ3BuaE9Esnmg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0rVlCRA9TVsSAnZWagAAh2gP/1T2bbqW40Mm5ARW/pQS\nGt7Du5eBpmMNUpurCCUi9xWo8ibcmmuHjRX/dsC3rBUaXsReheAxZEZMxWle\navmbocif69zpr98tOR2zQmsFhzprKQ6qBfxeHYw0FrTnCIWS9cimr+l7dp+l\n8qa6c806jtQ5gSHBMRNYWWUegjx/wi3NGYXQzie4hwNZveJNBHQ/j5wBkIXz\nmpBH4Xa6WvwHABi+MvXy9rFTP1KG56XLQjIxB8HOmDemRv14IKgoj7VO6Qwx\nLb2gC03nCMyYtPn8EVgqluUX5sbmXWpXBhiyT4KTtvzV3+NPHeStiFChx5Ph\nqGqV26exQmCJbPhKw+qo7U6VPlNmr1G9tPBXg517apDu04OseGg9XdWIszYS\n3hcKB0jFjGNazk17UBHTV/6xtgRDWOTWOa21R0p4jiH9W7HreEx2OzdnN0U0\nmiPWC+kUJaHVTw1X5lUf12KLQDqOLcmJLeJ88W+65epClZGD+gzWFsFGNn0k\nRXvWEyu5L8sPY7/ExLPh2bQg3f6Z52XV9zesV5k499Fzovpd/tzeC233NYrz\nT9jZBHEGb8haz8fJ6S0RMxp48eLL4YRoThEUThnyYKqQOqLXPJ0uJTfQYsdn\nB4gGc8Lgy25r0g0FyEC2xCF9Zi3hEa95qX1GVoIn8337nwZCfCb/85RLnDgg\nQ1lG\r\n=EdLp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"799d1d2b003bc178db8e4ab530ca4f4eadd1ef6d","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.56_1574090084963_0.3351895016612376","host":"s3://npm-registry-packages"}},"0.0.4-qa.57":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.57","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.57","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"058eefc76b7f04166c9b2a202d89751159070aa2","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.57.tgz","fileCount":49,"integrity":"sha512-ElLv+85QZFoXaOzhEltu8MwjFfYwV1YuP+v/uS/KitsUVmWTGSkEiYeqOIfDexq97zEprgkth8pMdzb0vtndhg==","signatures":[{"sig":"MEUCIQCsVnvh7dTIKe1QRr4Uv+ZqRylE9fNNft/M3CvGDiiaKwIgVNzVgaV/OG0dZmHfx2WcONlCpb6Z9VMVT3oRPpsP8Vs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0ra9CRA9TVsSAnZWagAAs5wP/1SXbfG9LN0tfnUS1SRe\n+PJrJF6WijoQZOzX1S1WZkwJBiv7oXOlZZldWSkr61eU0s6h8/sazzouQhCo\nwLym8c1/fxIS0TJ/z6f1u2xS/6G4yXT1bwV3L0UrK0cCB8/+m58i5v1JXunR\nypGmquE0xvAjCStvnSO7E2ahoBTsW/gEpWiOBk6Jd0CWleLfDqcdZLub3z6g\nMZcScdJhGIxcbS/3oV9mDlSjaQ+WpF9BJEi2GUJsdat0pSfaft7Rc3C8T6Zw\n0hZEB2NKVlOppocyBFFiBXnFc9gwUP99wKnKGA/z4fbDhGaBwv1F4U4VhvIB\n+RuYIrwweGGTP0qtXNM7LXs7WqT5BK85EzsMf2yfpHEeSFGj+KsS5A1v7slt\ny3HiJdTHUNV4tK/GH1crhlvbhxId9zOcJ6HRJc6Ol0wLGmqetcqWXWhQeYGq\nVGi0Vg2Vwl3Epy8TsFXFRZTvEr840WAgYnDDgrTBiZ2prjv0Zz7XoWpn1OM3\nvBhgApWr/1C+VIBbIzUNeonlDu7IehcN+kBtglt9pG7VcsKGluoGGeuse+WC\n9Nkr2LGRQrnIA0f2KcVJTtqKKTGRRL0OSvAbUFmH5lhn8LZQCN9FKGp3NAO9\n5dgm36xmOqFKgG8ZdefteCcxV8Z7j3pfscwPo1MgEdu61Ba95b2vvKqc29Lb\nLYWW\r\n=fo7d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"1106df63fb66ba5c39fcbfe1ada4af8c66317589","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.57_1574090426253_0.7285493444028022","host":"s3://npm-registry-packages"}},"0.0.4-qa.58":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.58","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.58","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"a9409b0bc93a96cce5817db0296891e0a15c4a88","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.58.tgz","fileCount":49,"integrity":"sha512-u0xPwK4zGQFMO5kFAD+IFCLjSO1GTLgB3YHrRIT2E7mKBc2W79XE35zvRBM/Sdk4JItW6h5/69NUMyG82KhdWA==","signatures":[{"sig":"MEUCIHisiGrmq8uzHWvdQvf8FEgjXS/mahyePfNi9oUlX9EIAiEAkt1vekQ24wJPFZSb6uFAolQp8Wfs1+WKmFfASxIKYpw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0ruuCRA9TVsSAnZWagAAIWMP/1HZ3GGf5U8aAZfj2LRC\nIACpdR0RvhM0UIErqyQWYNtphuja/dVJw+WH4GVWKUztimGH7AUl/kjVh7+m\nVy3F9UCCFd2ihCKhgY8OgsNTGP+Ll40vmpnH3thxoW9B/cNthLLzlcqIwj+7\nNucDu0XbvdGNOgw1VsjNnZgpQF5Q/eFtKQZVUPxtIphfs0eEjPFIOkzxhmSl\nZV4T4E5U0IwqtEyCC7iLwr/poRzgmZFqhK6ynEeR+3CAbTjblHz+dZoocPlj\nN15a6f6l/yBYnHusGOiIE5T0nIiczR5FeyaXmHrtkWYGrwArmpaCalGsRlmd\n6UM0nZaB2skuTbFo0lxl6QSOPBMeXSyIjKFi4rtb+sWI1EsNpM3zXx/YwFZU\nts757pUM9+6QS2hFxgmifBldIeBR/itjt3iVevqT4KP5iKO67xoErEqqkREv\nV3QhLNRCi2rzQiOp1p4/Czzueuxk+mDM5TdjCsiG+YZFTMZgDQMbosxewN5n\nU15AoxpRlStGTZKudENMItRjKBWkdO9B62ii+EOU/twcRff3+c7S1Gie2C6I\nj2VvWwyKSkQMpKH8tcD+wsWNUiaR0K+4TMal8M0mfV3FTWO3+RlOmXP3tCZC\ncOFlnqBTOd9xdQrqXHWv3+VUYo/BUHzgtLKpbWZBLxlauMfB7l9VS5m2aYBO\nGacM\r\n=c4c2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"f4be43aa191329846dd23ad07d27ba5883ff9546","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.58_1574091694274_0.19527971788877196","host":"s3://npm-registry-packages"}},"0.0.4-qa.59":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.59","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.59","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"dee9299d0e5fa5916e1f4bd690a46b036127262a","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.59.tgz","fileCount":49,"integrity":"sha512-V82Vmtq1bN8IGFuyG/Lt72/QN2eW4SDsTn1y1j7ucozp1A9zxa3lspcXp6qvpdklvmod3S0jXFjXBFAAdV0Y8w==","signatures":[{"sig":"MEUCIDbcWTV89qc/6sNQXc15FIN1hfnX3ogNP65qD+s1yQe7AiEA5rJ3AnB4woZxlGi6uGiTomXeCR29dRMR9JwAKmnQbNo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd09fOCRA9TVsSAnZWagAAw2YP/Rvmqk64JCsCN5NOkx/8\ngCnY7xPl6mWW5C3faJOssJa4HbZP4COHgCfpFpwWVBJhCgHa3QTs+kh2V2DS\nf0a9VwhExF1Lzh18pKHgMFWGC2hfYUcEDGblTuBJxtBZ4xNMeGRMp2cLxB0+\ntZKWSiiFeiNYgDHkWDEmlxEaHdLw3KGg0KbdaaeBfYUsZuowWJUkBGcv4rzV\nH/vivsWUyyxqLCQGkp/je4ZNbnxCipTVqbk4TrFudLmshvk61B+iOKAfiVUL\n/pYWzbL1QI4kaEMSX+YedkVX+OMmAhrVHXHqTvfgaNpguhyC6sxVJbO08qWF\nCzre0dAZxtNBbX2J84gDaDt12Pb/y5a7mKkfwdkf7kCFMa82/sGEZ2PiEHzh\n9cVxCj0ohuEdFGL9O3K7hmYQqDWRAIqC+tCYEuq7J/QbcZdoy938UjaNg6Mo\ntElwXu0FqjP/TsFfKRvcuffZEowLJhoMgam+e0r0zJMxKCgQVAE5QeYs6IIM\nw2pTbzdhyYXr7YYuP6erNUxSIyyTYsKAVr8pBUF2uBXcVCNMBomF4U1MqYAo\ntrqp0/GVpowzko8kuqNPLl9hnQtXSejWrXaxPA7RlJWMte4D77CPuR9Hjx9A\nHRiCYdlctaGQsoRL58eDKTqI693KG3o3jmdIcEp02Fk6UllMShGHxEGtGdj1\n7Zwd\r\n=wdcR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"c5cab3120577a1f3085b577f6dfa789fd1997153","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.59_1574164430361_0.19561468267731552","host":"s3://npm-registry-packages"}},"0.0.4-qa.60":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.60","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.60","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"f0d776e71f395ddcff8bc5a8425577c8eba7ee0e","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.60.tgz","fileCount":49,"integrity":"sha512-mCsJnGxZY1dFsd2lB16Q9IYAN0c0bDtWdeDnfBgSivNl9Wm6eIM3jHmwD7vmVQM3ZSwxO98PvG/oa5U/TUf36g==","signatures":[{"sig":"MEUCIA3d8YJm9HJXZQ9lI6RHvyk+CujIOEh1dBQZiL8UHP2iAiEA827vW1RPSWTC7neIQrR/4XT6s4YCHS16JbhQrxHw+3w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd09m5CRA9TVsSAnZWagAAbMoP/2IsJWkIUPMx7j4FoSeD\npWycH3hLJoXsUHparhNnNfGy80dR0vMd00LpcSkcmeIx4OUyn3yPUtnuU2aD\nrX9HG4eyZPIaMOXYg+Ib9TNyCpp14iLZszLU4LYvzO3rQtlHRJJqq8jpZfC6\nRwaBiNpcnSaDoNArd3MuBoYk7D+yUD25WrEFfYGbj+/Z1F/CJhD3N9HIt5Wf\nQBbrZYyTgYfV60x3BDik3y+SKetpaMILeXkgttet5Q8jhfdRoAyVy4lJFBez\ntkQ/qfD14lXaktXPhWndqPxC3EfWHuNWH6m8Ithzli4WQFmaRuV/+bhMPOhn\n7PrkuTf27EJ26wkc+0MmHAyG36mUfi2QodtlYzDK5pS7zFSl8dbMb6WyyP1S\nUipsfJ4y18cEcrD5MGgG+AH7ToJbek+hnOWr77BIRxYcD2kuago16gWm2zcN\nmVcX/56enArZZ86mdjJZlMOFHtH91iBW5nv+YcHTwaffFzy9v1fHmJEe8MlE\nPavh82cYolig4Ftvh86FpElyekb/uMh/jWlROcFi7Fxh91Y/bRjbWXs2eLf8\nxO/ugxmkq+bMuchnHJ8GmAckPgPZAMlTRorZPNlISHlSPYdoTma67fOU4MDb\nN5Ao3tO0gqbG0u+i1G8XhapuPKRGOxchMSCi9RKg2bHsqouoBbxu8JkJ2oxV\ne1Vq\r\n=D3if\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"c0e265c3d818490cb6d60606c1b35efe813da932","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.60_1574164921022_0.5881936061873587","host":"s3://npm-registry-packages"}},"0.0.4-qa.61":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.61","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.61","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"9aecc46ac24a800aac64dea6be7e9fc20db2e58c","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.61.tgz","fileCount":49,"integrity":"sha512-v5qzIcxe1yr/2t4Nva7WQZLEjt48OcQFS1cr5wjXDFXr4iReswznfEZB1vsAgQ5hRWGxVr1qx66p8vuJOEHGAQ==","signatures":[{"sig":"MEUCIDdvPDc0p1vYJB5f16FD4WIzNtlLZS3NC2FhNZL5yuKnAiEAu0/T1/Gm/wPGguelaD211ANPjhi1jaEEAsl8x9WF3co=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99986,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd091sCRA9TVsSAnZWagAABPAP/jIL9XF/isNENWZEUzbO\nee6cRq6eAVvdbgTosxnmW5xD6Y0gQkIBGNWq/xbXGrWrjkZ8f8RkM20XA+D8\nu5wmWO0wietLm0v57+wVi6aEYP7bDy4300LJEbo2EEe296D5cvnhJAwJMClZ\nD0vW+J34R0PqeS5j4UOGAO3+qJ35C4mQFTPvroiAZE9vaKY3MF5Q5JnWywFD\niT7RsG2WY6sZ184lC58GrZXBlJ0v5URZrcFmck4eZ5ZYdWW8nb1w9M5ynmIG\nQSukPCesZpmLic+TO9tRDEH0g0J06IjSFvCqik3cgdYeclQcDOcwpKU7KFYp\nTWBVByn+kwjFG7HNlqN0BLgqefnINMpJ2BHym+DFFAJDJo3Iy2HnlHiZANVU\ngzVhOvrpy8KvWIEswre+n7+7U4eeK3hi1LtBlDEm4W5TFrRWmjREhncY1Uf7\nTh0P+CZhxiXS+zjXVcUBzlJHGYOy84cbhkGERZHpnK3pa1Ouvi5Kx2y485Wp\ng6kbAzb5yRqk9QQwwLpymtFn6ndzn9pdGHcRlJLr62sdzyGDOvVPRT/4NZQJ\nLzbZ3qxq8mzlMG/4P/Lwclre2t4YQoChurTnFyYP6Ul8JJvNc9iKRrevH7bB\nPsf8IouFdLpvcHOh+bPihNOH6XFnRYvwXoZxAPh3p88xcmihi6nAhJAVRvQ3\nl8UQ\r\n=+vy1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"6cce0806553ba6c8105a90bc7c949ed2ef662c43","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.61_1574165868572_0.1268668173698455","host":"s3://npm-registry-packages"}},"0.0.4-qa.62":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.62","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.62","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"45243766b51624790414d118eb090cf5a8948212","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.62.tgz","fileCount":49,"integrity":"sha512-pH5KTcn6gt+TCwsbw6R36bt1zDGbxwPKKrT22+GktxR4SNlOuwuZEee1kECd/SB1s0wgnDDZ9hJB27E8/Pi9IQ==","signatures":[{"sig":"MEUCIQCXVfeWizIkrhTfHSnGj0nf9tbP5FHA0CxFNH+PO9TiTwIgI3xz56s4qKd5aaUwJzem6aJL1RH7uMik80vQreIsxCc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0+AHCRA9TVsSAnZWagAA3bkQAI92slYl+twHaXQVUcUR\nlR62laOepbd64oVduLJOvlnb8JAFA2XTD4kkTRfTU1n6StfcYdp8+Zkx5cAk\n3aSry8bD8z+UnvUKO2FgNngZkqsHh+sMavnAuySJSCeDoPkHYAOKWPQQboiy\nq/TJymLB+3oC1avy32QGai11Q281o/uHhL6361nvAVBIsugAF654gUq3CxHm\n0bPjkTT4ZMlLSyt9VF4Zx4dwubCnkw/QGLi8h+6yBQlFAfk8wBPBZ3lP4tgG\n5G+YWgAVvITMjK4VvmMmiBGJN9OGr565vOQtxxPNJgzFdPnsIPnCutVSpCzn\nltqcLyzWZ2wbecl05Z37V6QKenX0xN0k/7+smQhRpiEQpCbNF5XKxUkWztRV\nD2JjFFjesl1XZpyL4NzyR8fsqDScdFadHzUIIDQu59EAGma0/3eltW90+lWl\nC5nugPoZxyNJ85D70HlP7HmCLDJ2YH4JsmEtf7dziqOeqV6mw+Ul1itQaaU5\nrLtbKf6IRoILMkfs8ONj5eDarBFgyHzAkDeQQj59gJRZp3Uk4kB/cFDtL/JF\nmPXTgdQUARNVoVKiiDZqVlHfLuyUZbXggV+ovl4Yb/uJi7lSVvubRfuo1t3F\n/Bsg3N9H+742hKTne3azsaWFFlgg0qSvcFgIciWupha9ukd9pkc6ZB8+BIha\nJaNw\r\n=xA+r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"e882374275cc8c29b16294a5abd91ffb24204fff","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.62_1574166535019_0.768640129424198","host":"s3://npm-registry-packages"}},"0.0.4-qa.64":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.64","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.64","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"a21ec70f12b9a00ab13c4a2785412c68931d9a5a","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.64.tgz","fileCount":49,"integrity":"sha512-Aij26lU1xzyLdsWPbMSKBVL+0FNW3+I7a6fEvftOhCr+NPrAq77io+M+9UJosu28xTNds2tRsFzSn8YpfzwT6A==","signatures":[{"sig":"MEUCIQC4prnuOkre02K4F+yRqQUlosfZZ8sq3gXozKMW3ME2hwIgFqU3qdPrUTEotBbFaEZEqYgZlDE7en86EkUk43W9G9I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0+DnCRA9TVsSAnZWagAASjwP/0SG0Q1JNBhecIUGxnP0\n++IswPpIRk9uKdybyUdUwcsDKSHaovu0P/IJLPm6LDOGlIQiVxh7x4ncRf1j\nl2ZzSgaA2a4qrpm9EBTNTAZs18hJ4rW77JjpvIZX7HBCdWdur4SMO0ZwDOds\n3LaeZmUapxAmkm0UVIvphma6pe1gUy+MwM3O1j7RUJ8+MufFWn3DzpfhJUqU\nyUKHQY3pbiafSfgtKlRYgLI/ZFkyHL1vQFzxNbqGz1gz5iQ59+YKtenVYnEK\nbHrljt5b9NH+zWkL+fhwGxWvAhoiQGxErlQaZ6ctSacON/EQRtYLfsLsZz8U\nM6pVMhvO3EXtDunC8x1x2Ug7b/qxB87vbEuNdKKYmg4rcLhgjm9eH5QXLQOE\nO4qRG+HBzyxw6wh2ipyhLTOo2pRd7tOND9zlpK/CL/rIbFuW2kh0GRozPnhM\narD6G7AYU5R5GChYV1A/qzHBf8aebHqr6PxQPCPUPSk6bbINtJXAFte+JUsw\n7WDHjNut9h8fclCTKOFqV7ZMOv7ZcJhbolFIrhDvT2hqMJgh0GRitTU7gqnS\nrYuwFC/XPqCYAD/U1WPEPkCZ6I5BnlCyCj893qYEi/w+AilANfsJSM2CynHa\nJvI4z2ddN01ESCjCyFBX1sXCq6kzl3w1ORw6blal4MHXDbhyU3ezegt0HxEv\nO82q\r\n=ErGY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"78e931bdcb4cee89e0951430a2fc83d113ecd649","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.64_1574166758958_0.21673197565702673","host":"s3://npm-registry-packages"}},"0.0.4-qa.65":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.65","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.65","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"04c438f811060876ae6cd840f480f23053d2e5ba","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.65.tgz","fileCount":49,"integrity":"sha512-WWqG7/lG5Pxc67NeT7tElHiQR0qlIChffOB97B+BURgJOho6x9V7ZcY3sw4VMkPnjeh1RLrO9YKxNtnZjqVFuA==","signatures":[{"sig":"MEUCIQDW9utg4KH3vlUPj6AcTYkHmmK5tJMOL1AISEx3oXb9SwIgNxcumlIKeplt42ypC8ewnw32jLttQ1K+xE1yhowpf4E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0+MhCRA9TVsSAnZWagAAZpkP/ikN3BMAFx49yW24ZB7b\nXHmYMqUKqsvrJJ/Rnx4FPI+UkaNwHYOsFbiaDvac/P/C65+w3A+5ArWcluQg\nz7rz4qgV+uS09jLTXDDKFWojtmDQvRrLCYGdsvBknphF5HiswMLUipY6Xg4P\nrisx9aJDCBFR+exfEHLjYS/9u/BSEoEvewpiBVXJzHnOrjrSb5xWJlRaXJ1q\nJ4/Ma9S6muIDNpDlWRiYJfG/Qv7hb96Y9i8lccpKhxfZCeGoj4zjwBBiLEHh\nKCslksDgw6G97fuA4TAR4d3go/eSzqKCrV9blbnON23mEA3Ud/bjabr44sS3\nVcjxYHRw9ME02noVqaN7iE9JrCckJwpyyi5TMXCGZIHg/6YAhRy5zX8++2YU\nOA+wv50tSX7wncfZ7NxMEpqTUaMVBcfAt1MDGfoCCVdC2ByZWiSI2bLT0BwE\nT/tmr8LRIAbxx++WUFNvE5yjZyPYxv0vONDmhiL9usP/xlMm4shmT3PTiiAw\ne4Kw0NTXZ6NwiDf3fXyAU+4QL8wZYjsxYeYehfeZGzg1rL8rtoeKZIt6TALJ\nbqalNG7I5lj9LYKR6u/QbFkPIIqrREV1HMgX/+igM4BWHy3wdGBHG+O8tiU2\nBSh2Os2eqPJX2vsiG+fVjTvXtqw04uCYKDPWy2JRhhwRgHBKVbC6GGLneA9I\nBCVD\r\n=drvq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"b7b744b0ab19ea9a20d4ee161a104ba17ed4d452","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.65_1574167329327_0.4433229134127936","host":"s3://npm-registry-packages"}},"0.0.4-qa.66":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.66","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.66","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"bde429d1fcf3b887733726ba9e7ab402906c99f9","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.66.tgz","fileCount":49,"integrity":"sha512-kJhwS+ud+bNoYZ9wL+Rs4UgJTfjDuG44AvXm6t8KYY3cq7ng1u9TPlLhrtb9DTmHUucuF5q5on52+w8AllDmNQ==","signatures":[{"sig":"MEQCIDpENLMmN3HbEvT0RHbxkJLK77s2ABpKe1M83RoVqgWwAiAAhBaSsdUyuZr88eoOdcd6wpU+MrxaQ4LLpk2RifoSkQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0+lgCRA9TVsSAnZWagAAe1AP/A6YSmy+WFAB/LFqGg6z\n3a1z4eS1PH3OMQhp+nfhKhiQO6/emQLKDSbNw2No6vKRveTHL23p/V5YUNsr\nZgNLOsqcouYenEwxdZIJtBZOUERvJpfQPlfuL/vdo2AjpTuNT9U2/BYaefPh\nuyVELwexxscCyC6WPfEo5Yhl0mVzUNpqi/4VCDm0m7bPR2c6mpG6REBZ3NZo\ncKBPU6UGcMzsLuQLCWskM2COzIuQ34FZOQqEKjBnWZbG5MOGnZxxEett58Xa\ngs72axXHRAcxn39nyr9ueDnJQZJy52/kPK4bGma+hU63++odeNR3tOp75TLK\nTAx3WpnSZv7hcjBYeEJTUz/P4stlB8Wt4Ker64ltdBe0R7kLo0oH9/Y8DtgF\nx5AfyBzZniLgjJ8NqUPiFD6WbF8sr96zaxhRGU/x4VbILW4xg1ZMzf/F3F7D\nirjzQM4/D5wQnlUj+5xXdMOH/3vqDXw8XXbu4JCSb8v01OE8Oxr7BQO3tLHv\nzzwQ0erSyfeiMwGGPwhCAJY96cO5VcJ8QsCwF3/1UNME8bVJZOjttWJ8/mXC\ncyXfEs/t23LZOKCBEuqweGU7nspys/bwW9OA61NhbGoYrEllabSjUz0iX8Ue\nEmHFerzYfjAsH3eOYQmzmkxE8ZsjL2J7ISblFzZoY/p6ZdUg9bUcEjYtnSlW\nbR9R\r\n=D1l7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"ee09eeffc09ff17e0a367da85614f2937da1f9f5","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.66_1574168928470_0.49982089791118733","host":"s3://npm-registry-packages"}},"0.0.4-qa.67":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.67","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.67","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"bc6db2e91238155679ab3574731adf74c0945be9","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.67.tgz","fileCount":49,"integrity":"sha512-GTmjHay1Q345HqNkRSDte3nbi+UVmCEWabJcWbHSuRvqaFGNhbFUlYHpMuLUiJmSCyJtX9gTBfbzQhE0Z2Wk+w==","signatures":[{"sig":"MEUCIQCigXeqSmwgWzxxJcbUauzAUsdpd26CiGitubdNca0KPAIgVqD74lS6QzkZqL3TMgEMTd5F6zAPlz9El7HJUzdyg+o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0/RKCRA9TVsSAnZWagAAx4gP/jQUSWX9i6Cd/VV87pXA\nCBfY6HYQsMqHa4wCMb06cCoarvxjtc/yTft/0Ay4DrAdoKeTARxBMcPPJEUp\no+Zd3D5DzzSQtMBINMOfawFtlyOWI9XJBVG5h556X1PmjUjpIGlrqbkw2XHh\nRp3CeYOrRG0jJutj8PRR5IjEVR1/o4dOv6wHeewZGog3xnGpygkek/OmUZFn\nSowlSZWVHO3ZXTPI15R7TEBvLFdHA+xvwS8kzGjvY8wtRwlEfZpI9qtZSr+9\n2VrzchoWlj/vEuHBPGnhNmQs9i3wsPnBu3fEb+KARCg+z8/lZAUeWb4UgJlZ\nzIgYUk8rmS2UHawwB/8p1skckZeKJIRGkiZnagrZRJjdQ4PoS7EYPn3Gwutj\n2AlHZR1Crsr415EJjvjFswoSQ270tmeXSFvm2VyQqDK9yJgpP6y78xpiGxRL\nwhOQz9g6vTb3g5KIOSfxr/9am10nLfk8fDQoym0OHAgR/6TP7Vbopc2sssTU\ncesRCDec2lGNjAieFsJjK7TpAO6pYyS/WSNUYalawMN4Fat9eDF/mv8aFNqP\n/2RLwkTmPcNG2cRp9JLYWUfYmON9ODt2up0EP5ncXzltSRh+xCK4fvSqPqwp\nL1GM8NWlgINPcJZoFZPAmmJyXjfaR40LxjT+UMUOmdkRHjudEDy3NJpkDv8B\nz1uE\r\n=x9FV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"6b5c76dd4e26ec02b9de3f1173d55d1a818e8404","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.67_1574171722466_0.8250944715951272","host":"s3://npm-registry-packages"}},"0.0.4-qa.74":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.74","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.74","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"ce916c1732b27020bb33f6290f695be19cacb428","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.74.tgz","fileCount":49,"integrity":"sha512-VRqUBdNWrxmBHBZIU7iAvtoK3nxf8nzY6xFXORQdHUgjBENTexSbekl7nDHCkXX7wBYxPK3+HMnuiQ6aXyC29Q==","signatures":[{"sig":"MEYCIQDrOQ8DPu+LpflRGGPc5slWkDuUM5VFhplmpSHoF6LcEAIhAOa32tl0XvDQ3v1wWpr2KgQugUbIQr3ydFNlmbavV787","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":102201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1QjzCRA9TVsSAnZWagAAd1IP/3M59zTUDrY2sUmLQ5Jj\ny8Rf0AUk2Dinyw/bPIyzYDsBSDzmKZamZnlL28xZaj/Nq9FyTWMEimqhFZf+\n1IoNxTVjskV+CnqO4cJoM+Nplwn4jWp0WOhqGrPB48tUh2HJlWuubcm9Es/i\neLAD5kFdcp/8t7do3L15MhcmTZkCg86VM/Kz2bOt8fgIcZzaqUq9DYy0SEYr\nLOJ8JI4ChBsv9lK/4apI1ehppyM0Q4S0LdMphPSAMTV2ws68IB9Hq9TxWK1q\nyygfPCJs1prApf5ZrBERhEVre3YtHMHxlPaKPCRT4jJUmOm1U8JGUVysUl9I\n1S1mtaHWxQ4ll3oFJBJTM6Odjlnhz9PaQ0Npqa1kX2KAxCZZjpLGN4Gvtq8h\nSOyhlgVNukuTiRKNhQQVdWW6HXM0OqJ4Wjtxp6Nnkvq89EpC0a3xkW2jmO1J\nm6vPj7vBHHzo8W3mvBKqmLEHsUMV3hGox+nnKaY1wPm7s5iQU3RJN5xFXkrh\nztUtvdRRCBTEakZcE3Wn3rvHNRKiG4oK4+DblnSkfDc53JSS1TRs8Zzep5eB\nC1yElnrbIKc9p0+LwMNaL8AcVZd/7/N7oQDWMnZewdGorx0yT4BL8sFfvT2n\nIz+xrF1MdgRjAmI7cyMsEkOfDxxGHXi/bvdxussMRjMFSpa1xpCEuOe3UCn2\nHXV6\r\n=NZ9w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"2994700cee019af23953e7a9383f4c5be689521f","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","fela-plugin-typescript":"^11.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.74_1574242546720_0.20619884391313037","host":"s3://npm-registry-packages"}},"0.0.4-qa.75":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.75","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.75","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"1703b3cd87f0650cfbb8a62d1fbf63848cfff0bd","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.75.tgz","fileCount":49,"integrity":"sha512-4wfmddEMiVtmgEDP6WBwTrENlVDHioaLcuHqlH1ouLjjvBADwOQMMradr1Oo34ItICQySOHVximDBbNCPpQNyw==","signatures":[{"sig":"MEUCIG5D63X6+vP2e8EI5/197FBkT24UEJRmg5zfGDrrneYGAiEA54KgYN3aEs73x/W+VqSA61YfDDJ+o7KLdmJ0aMA411o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":102305,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1RF7CRA9TVsSAnZWagAAetoP/2yRCNk+e4vFBtHbzilZ\nmHQN9kwTIm2xZWz6/klVEQYDeh/2fH1n2y4sWKOiZ9siFv5QQeVPOqgtj3jO\nQBNDwFWzKGeJgI9N0j52a5RF+iZVp2ceCnBdh8DPphOIq6jca4VRJRwyNV6J\nPI4kdRzidIb4aYhjvt8LLAUFPKxVSOxclZcrrRwoQrJweRRJHNMUDLFfoJD3\ne9X8sigqM4uyP/2CB/6ebTsBUJ4T/FBZj0CFmhc1QZJCzs7rq5lx00nKuvuR\nkzxIMa3FXThYsASkOwLXFqB7S6WQMNYxcGaW8pqkO62J6bCNYJap7ZjsTMik\n1mWRRvtqWzQNiDjcNjdZbuRRKreHK6iamEHaAB+LpynlsSHmqCeeYt7Zz/K5\nb+oy9LSanOIp0XjuZTqpDZJQozMYzR7K/lJ2FDGinxqBspd9slg5b5Et6EbY\nDQ8EOsPxE9mcrKkyLvO1mIms5GKHMeVnClnCNNFQ5J3CdPKTGyEYOz5IaiTd\nNTgIFGZ6QvopcTuSUKCeo5onWEGTgR+WyliZCBRhvwWhOiBFPYIJg+Jh13Mp\nIkzk1H210/jJCtU2q2aQwO0EigDh0p6HdPLXbdgtGFkxz33KyqYAckihByZ5\nJQnUJXQA6fpkVo5Iv/GpN36jc3d1wntiaCVoqkBrX4hpU2VIiLTzngUnNqOu\nSRsB\r\n=UGTH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"2b3d3526f18cd089fbb8fbf5dd8a756161894431","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","fela-plugin-typescript":"^11.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.75_1574244730985_0.34271255274029677","host":"s3://npm-registry-packages"}},"0.0.4-qa.76":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.76","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.76","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"5ec1ff32e44142b62df97487c303108833067db5","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.76.tgz","fileCount":49,"integrity":"sha512-/SGUY2Qe7Pa1HOSNfKTipe1sXs1p0UkCbuupEsN3FqS89CoCkfvSCujTWINPoNr+eSmovE4FfABDr7VLK+AKYg==","signatures":[{"sig":"MEUCIAiyIQRCgRH93KBQ/1xBIL0t6EpdW2eZuyeq4+vZWdjjAiEAy6a4C+eyanehOvwMWYwGCu+pjw60C9kvr54yHNb2sjY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":102153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1RPrCRA9TVsSAnZWagAAB0QQAJQjnfM12IKxItFBhRhD\nW98PRRN/d5Os1jcR8JtZQcwvcTSw8125dmsHfIWBmK1S78ect98kOWXvfPe1\nGwARJsYNPvBsiUoJ8JdSQ1pAFf6oR9ixsfdVJljXyU309rJto5S8dlP9sEcb\n8FCx6FnW4l1i09w6hpvCRqHcFwmcVSWgPENyOZ9OY470bS8jvABQEbEGeaIP\nkMRIOP3y3dzb6iTAhYOZ7paBh3nAWCz10lvpAiS9+HNTIy9rvLWA2lbeXwWf\nmWzd7aIyGLAUCahlNkXkfQHav0NcdOGeebgOvSfycV9tCI/5civThlT56awa\nJUzZ64d6oR4hrOY7MbMvSXBVMLqwRdngpHW7gpm4uR7JF82/81XEZJuBDEiH\ny5HuCA159q4QZLrmDJClmI6L1AuYOYADIGU3v+0Zv4ENSLLm4d9gpr1tSaC0\nVTNZV7Ss9C72ov0+6IQWYMeK+Kt5VzdTC2MPHyNkehHNdR35mcgyzTAEULbr\n2+IjCcALiQsUij/8COyk6xdMq4g2HzRAed83pU5A4L267In3EdcwhNkN4g+b\nH9Bt78z8iWn1cTYedS4Eav7r86/LOWC+08Uev8mu8DB6FeY2jVNGxfujh8oD\nSHuUjjumVYfO7bycmwRVp0sIvEU0tCx10jWc5q9uPodX+1g7mECRovwv9Km3\nGWSw\r\n=K2sc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"09cb9586099053dd95218c468f8c9c7240957c1c","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","fela-plugin-typescript":"^11.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.76_1574245354807_0.5047034962089096","host":"s3://npm-registry-packages"}},"0.0.4-qa.77":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.77","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.77","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"a5f53c331deeef1f861db1c6ff5df2af87894bbd","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.77.tgz","fileCount":49,"integrity":"sha512-Tb6mmSwdWgTJvHbv6QroIA1NLNI/n3fzIPg1SKzUhJ0IDJJEFQqpqjC+OXAG2GvLKyt6p02pA8zZne+MEksKAw==","signatures":[{"sig":"MEYCIQCU+H+fBk2ZQyFbzuSICOXjxuKM08Mhh2XHZJLdILd31QIhANqTLE0QFkAqX2tLofjQvuE49hWv+IbvVEqlXT3v6W1F","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":102769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1T1MCRA9TVsSAnZWagAAPuoQAIRgwIeNv8M1D6xoihuT\nHLZCFh+aD8zoiy2F6qdn+Jc8YdnSaUix9SuuJfqBjkKbvK2Un9gk5H9pf0N1\n8zF2LnUfQieZxaFHkXkgabiuHU3uN1dot0eMMUaiD57VKVUG7zFQ6dtyBniQ\nKeRdxHWtmzvLKmojhhxt+wS3Kb+kzIFNYYJXRnnjo7vbAH8m7kq97Tv8DYdm\n6bjS09afEVTGZ9+t3DbPmkcReQlfuq7TB7YziXtTqcX3rYrBL8N1hGuibCMl\nue5YPzslvN5ITywE3p+WD9KsESkj+ickZZ9kwxoshixqwnRhsJ0/B0MLTw7r\nAlUqN81NnMEudFsbKGim0lqmoZkbeY/AwcYRM3vLCXtOdOQ3yAoGZjRR/zFe\nLc6PaEVFTKMCpN6kTdhgAbVL3dTJ5+bNAxV823DB8fWyItBSBzvZ0nShz3PW\nkYz9gJB8YcVUbX7W1gj1W6pLqkmf/uwedw48TzcKcc0sAb9A1oATn8w9HZSZ\ndTUuN262UYzxukTYt7TiYrANwAZdNL/uCz7XExbpk34NkyJkv8p/gRPfKUAZ\nnBIzUWuQ4sJDJ1PJO6G06JFh02P2ugQ9dPucyjVF6IAJM6Nbt4u48J6J3dpX\nH7qRUPetbk07rNarEqaGrNlQR4vz5O/dJYbGwhd58i63Vtzvs0GrpquTjOKo\nWtsI\r\n=BYet\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"5ad6e200ed39c0855455d18642a20b117e56e438","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","fela-plugin-typescript":"^11.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.77_1574255948234_0.20989754970449037","host":"s3://npm-registry-packages"}},"0.0.4-qa.78":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.78","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.78","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"d3f77e88ce4ad0e0a40ed95902d2ee33fe15dc84","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.78.tgz","fileCount":49,"integrity":"sha512-4vMgte/u2H/Gt+s+7JtON74feA03t8zRHLyESehs9+edhNgCioSg+3hNL+exUqLGYZoz2m3oFSVUDmBXIysj+g==","signatures":[{"sig":"MEUCIDW5/N1p7es18Xs53AbxFKY7T/WoZMEzOCLtdCAOycoTAiEAy5VqC/YWMYBcA8wZHnhdDjTcG0GD0tn6tfa7MaF1+OU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":102857,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1UA2CRA9TVsSAnZWagAAwpQP/2gvBiyh8WknBdfG9dFH\nqzjuiJ/3Akse2tBux9gtooDQ6iUcL0so0AaQ7eeycDPa2/Wb4NWgz8IY0BQZ\nWjQcc+auI7aJuOTrWlkqpm0+xtoPlG6shyidZHJBcsjBQi9ip9CoeOPrkK1a\nDITzm93iMy/bUpZQ61WlxH8HouVLYLUt4Avy62INK+Y/RXzq7QQaHzH01dW0\nB3mAY4fVDhMrBVSIFJcWpn1QX5QFKP+zYNhms4tZDYkEOltjSvdLmwqBFhDy\na5P2FnJNKkhJ3tH9LXt15FsmW3qbzA7qALtnQoXdHGdL53mxrWTUsBIXelx1\nRAUZLf65iQV7frkBTTLw3rr+VuKIzhhXgY5nuZsjqLuNTrzixMl/D9vBHhi3\n1qX4JCyUyuVIUWXq/4ux8G/OMiYNCiNXkref+138ynTqILflgtAU7rGA3fJ0\nHgTxBbM+PjcliyMmQ0A4VdHOKipLJdaoGLwO8MgVZahMzLlU4DnK9QApYfMi\ns/wUJxFqglx1HsrbYc7vt8Up1TX+fJWNHH1btUvIirdHlDOAa+A8nhdIPXmF\nGuSroR4fx6qV8490is8Z6wYD+0NfX+P642ELT5eBdPWlnAcBhojZQH0TiA8o\n/PlE6EmGe3dhXdBKyWt8xFsJ9Rvrt8G3GTFgxkgWnH0Da+6Bb7GexM6Tw7OW\n1ygk\r\n=Fc/j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"ddb848207c15fe5cf3c5f49a3a4c73b616b75364","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","fela-plugin-typescript":"^11.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.78_1574256694076_0.675651681744077","host":"s3://npm-registry-packages"}},"0.0.4-qa.79":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.79","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.79","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"6dfc63ab46539dbfcc527253d48528b824ac14bb","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.79.tgz","fileCount":49,"integrity":"sha512-ioZrj5Cg/6LJ3VuEJlvssFGJF4ESunCaNsD86T22xR4V3AcCm75A2XFCu17Qd2nxsDG7/2Re1TVpbKmsPt8BLw==","signatures":[{"sig":"MEUCIFVVeIi2Hip7qyP81qf0r6sW9UP2SF3fgybFkU1U9LNPAiEA79CEg7xRsQZywFyXPtzrXdgEY/AylIBc+s1jBUGoR60=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":102917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1UXRCRA9TVsSAnZWagAAiFkP/AgSyjkJpVr4qlsOr1ra\nY3kmSN6q6fihDKOfh5B4FwCBXvkGGsDmQLch+0PI9ynUqwOWKC+RBLTRky6+\n91YvGHGVElIJ5/cJeCSj1zRgBo11n/1aj4ekHLBX2/7nYMRvNmZmQXgdm+ef\nT/ETL7MW+pqZ9E0DMB4t7gqKuusrgyrR46bMaDoWrDeqaj4aKANh5jqVfEmc\nseHlRd4XbHY4bDvv7WZxaR5/PA93K873HgO4V0sqPMPJuF+shusNXnHaSvOB\nEvybyS91Ub+/Mg/cQZkN4pRxUJiqDEpA/XHqN60WZ4SxZSiuQ5azB+XoqI2L\nLlTl3GpvUvoMZALYVOi6D0Opvo3YpEDz3EUHJLd39RrF7x9Ld18cCBuVRlPw\n95Cpq6Cyez0xgJZxCbIvXMk5v3H/eNffe2NTpSihEh5WgL/Px6kjQIw3PH9n\nGVfwo0wDwUBhv9rR/P4FOfNINpJLl/dnoOChoj/0OJnt5YCyOwk3eKdTYDnb\nmWGIstXpQ11YGbdxvOwsH7PMkeg/rjlGzzfQ8wmYZwkYnhcTRo5J62vbPq+f\nr+re0Dg0s/ZDrPIvEvgxu6KroMt7bFTjry8n+k7loboMidNIUL/sdm3k0+HZ\n1W7hfRn/sD/GoQx1xRIOs2Jy85bNvXS67YGX5j6eAe1g+PzX/Zmnaepj9B9G\naLGV\r\n=3aby\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"9bf22089c2c63fd66152418ee3dedce8edf5af0a","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","fela-plugin-typescript":"^11.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.79_1574258128603_0.9999256972300354","host":"s3://npm-registry-packages"}},"0.0.4-qa.80":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.80","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.80","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"32a09e9f66fc6244dc76f874f910e7db7b0d3941","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.80.tgz","fileCount":49,"integrity":"sha512-CnnRoMmKTx7vU42GkslP51cTW0gXOJ5ihRlFR6PQyNK+PwtAr7P13DBhCMzJNo3jRjW00EToF8dC4iwvFoJBMg==","signatures":[{"sig":"MEUCIGaU73z4mIJMp/vyIXIDiTosw0zvX1hPEVZq80ALudldAiEAg5mSg1JRBWmWejZ+7OjKwIas0fkphYTQFZn/IqnDDdM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":103091,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1UquCRA9TVsSAnZWagAAjbAP/1eID/BcTzCeI7knjO9G\nmqwGQY7DOuLtif7olyG5Uz3mJ9quW2iSgm7d05W2WGUtOzG5mN3rL+UEHxrx\nIuRlVtXRwOsVziBCYMRz40nHRW7gSsQsuubJ0AZGlkc8r1PEqTVm3BbyjBC9\nvKt1N6WLT38Uyri2RVjWNd0+58NISul1L4oFFmfqyk6oOOJvjHvJHgZb/9B9\n87H/9MvH+saBXgFic/JvE7bRxRerWfX6hVa2t/kIYwXLgO7YgbDMWWWArLIH\nuwmGOVuc9Y+7n+2DrJK/h/yxW3rkiqJVkZvzMVM/C4z/QnoVd6hdBLEWJpyM\nVyUrUXZT0VRkW4otYRkBsgLVbEWFOS/q5T4tA4lRC/oKSSnk477bBtM0MdZ8\nlKg60+R00QpCwGcDfmJwM94MUdICUUueIcJIHIFMxGg2Cc2lNFwi0mTGMN9W\n3prcPKKbdrpfEMW1doMPoXJCyAo/AN2XF5yXkuMcEs9Z7D5vLw9oJ7jog+eS\nFX/Xx0CZxMm1PQ2IEVwBBOVi18UVN02VUTDPnfzGTQjFc3K/dbywN1WYG23l\nS9ka5rIGDUeUbLllha5LR+tca/VcVuq0WFjAIhJCW5GlZQ4/23hxMiTkCTzr\nQwIojTv3b1PV6k9+cXL1scrZNuxRaCSLYBm9UFUAarCqK694iQNkeJ/ZzEMR\nSdn3\r\n=85wl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"19f853eb0a125501a0ea549d5e416040a7ed2a12","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","fela-plugin-typescript":"^11.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.80_1574259374594_0.3399530126808825","host":"s3://npm-registry-packages"}},"0.0.4-qa.81":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.81","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.81","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"bdc92e6a86549aff51b348ccf025aa23e8fbfc60","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.81.tgz","fileCount":49,"integrity":"sha512-irVlBBjf/kKdm+eKtjyGgOyOOahqX7TGyICKf3YJYn/Gp6y6sdl2MxHjpQi2bzNgjHj04o7pupEHw3/iOjQyHA==","signatures":[{"sig":"MEYCIQDo/UEGCZsppEHLYN03LQUv95R4f3UFpyz6pFx6SHIkzwIhAJ0R7wTjY2kCcsuzcFygg9JRQAAJWZjl0QXa4D9DRWPC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":103249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1U3qCRA9TVsSAnZWagAAn6cP/15WDrXqmtDXKbbGOqoZ\nvKU82IOepyESjf22QRqsnrhSanqH0puRU/4oCwfKO5QMf5ubZfmU4cW4tcF1\n0utHTP7MHUoS5Y7UHtdl+/H3fsOZHpPW9rOTLSXJMPc4DdpxbQXtgVQrP6iv\nDoOyg3RQQqinUrm1+iyauaamDWhqQQDSnTc06ftfYgsrbqyoS7hFs3vY8diK\nfqirhiLWW5fMaYCnafNNxB84NvfzcLJbLCO/l2aGoIdxArUBf4EYvAKn2G6P\ncTYixcFvAnQNrPBETml+7LIVIabHTpXSUT9uNgp1kc1DZJGbalHteHIJIt2G\nhsW/jazBuPwWebjlNAZBQvNUcxj4UykbuCCQRrZkYVAamYg2kV4zn8l/wpPD\n/E/q+nNI/yQR7ODlNwe4YnBht5owELbyBBwuoszj5InhkRukH0vtDXXrCuJa\n8Gi+v8byVwbP2h3/rnobvxOoeEMB4b2w2XJ5IJPKSMTUZ37syoAmq9lFRBMa\nBjdu5FLLPkHFXyCLxsq+/q/QgV58Nub7o9xB+JT8hNM325+GUR6G7HBd+fGk\n6e5uXFRiXlWWM7pClcK0tINMPToukwANImqxWuw9cqhHss5vljp1nuYg2xri\nqRm4TD25f09L+KNQtKKlX6MJ+PXPqzHj6x9qfD0oVFTY5tdyCLCw2rsQ8vTv\n5rOV\r\n=1Ckm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"8bd47342aab77ddd0a261dd9c4358c7c3f8b9b7e","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","fela-plugin-typescript":"^11.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.81_1574260202505_0.5579856296140253","host":"s3://npm-registry-packages"}},"0.0.4-qa.82":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.4-qa.82","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.4-qa.82","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"25313cc941437e11231a0657908a7f182e367c2e","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.4-qa.82.tgz","fileCount":49,"integrity":"sha512-P7XPdys8+wSKhNQQsx6KdAPCny3kf9vVn7z3W2qOJZ/STt9Cjcje7jyQjYo5RIPoI7TmFJg0y7jhvL2rC6Qh1Q==","signatures":[{"sig":"MEQCIC0m736vWTKifHvKxasYEQgauwd9sOJnIjRF9kVNBOV9AiBfcz9J5FObDvW/Z6czpo3bIIIABe57r6Kt799k/KGq2w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":103361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1VFbCRA9TVsSAnZWagAAIVQP/ilddbFxn5EmgOE+Wd8m\ntNdGA3G1RoPbEMaHSKdbcSTRnqFueamaf+/7ti08xSSmSF50av0xTNXtPKoI\n5mFPvY8yyCMpGlowA9aWsOcT+N7p0MZzySYhcwT8DdyKXiSDLSnb7UrRgTkD\nVoUcEcEIqkIbr9Fok5qjS6M2CGry72uRJzrEzDnjCpSVG48nUft8NwfaRWCl\nUhtwwtN2sVoPFZqCrZ45FkX19WTZT5aRO2y85kQjPqm5weVizA1LCi5dCBnb\nZEUs0w3VGvyAANjxgvIb84S4k1UBRFZzCOKigMNSZnfVF2rtwJjYxyHx9H4t\nI1LTOLtAbjJY73zKy4DBi2++gNNGyNsr+OExWs4yasSl55kk+G0vwiNmIIh5\nDfvHAKZSxrYijconjJRyTt45T66irUAPyIkXGlZyantNNdl72R58fEdfOapI\npE7BsE4TnLLJQ9MWhtlwpADOcyWWbGAecgHktKxty6taL50FZqQNFkCLIyhX\nmnI2o56TgkvaQWE07OY6hlkfBdSvGWQy/T+HLo1PMk3Z0mTht4whnMH4SX+W\nkMi7m8f5ToTE0VWfRKpaRKSXXxn9F8BAScaBUl7X+bl/OpHiQKUuG09BQ77N\n3USyNPcYgjTCK4ksveQcqqfnySRji2kAn2Maom1vk3s+dByDjQCB+p+8itWA\nE2b0\r\n=MRz6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"f8ab73edbbc8e796e70a3653451712db3d6f21be","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","fela-plugin-typescript":"^11.0.2","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","url-loader":"^1.1.2","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.4-qa.82_1574261083398_0.444744452744007","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.6","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.6","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"sudobangbang","email":"605h4n@gmail.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"b42c1f069364b5dc311bd4db1bb89c9c3a6d859f","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.6.tgz","fileCount":49,"integrity":"sha512-TSFbvHdr1s9bL5ItfaKaqOoFBv/0JQ4cbvg4gT53j24N74vO/b7pfUUDu8+6Muc1s6G8ejAml1ymNJNGg3rXhA==","signatures":[{"sig":"MEUCIQCNcq4YvlV2GPPtFYhPLRlv+zk1/uodPlk/WfZua0UoCQIgf5ALIZGWCfdpZSwCrSemVLbhEDw5qSOpzg0hGEQpz2k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":98879,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5iksCRA9TVsSAnZWagAAHYoP/1elMxvpeMNiab3ToL1B\nLFAV7WeE452M5Tj3XLUyhMnTGqef1T4M9AWQXhVkVt9HgBsrlWFjAQDtVzqI\n69IXn949SLGh6E1jBA2F0hQxV3F1LXOsqREy/3jojNasQs0cYCnQantTDKVR\nnZg7N4a/BXfgTLpXExVpim70NWr21T3VePL9wy8wxZsEze1jxhImDXLk8QBP\n1/L6tmVIUpTl9/vSRKSIqCUbm8AADlmTP6JDb3djd7wrgJUfxnCEYKKPBGff\nfp0Pa84MZ+3PVgHgAooVOgw8Xyo8aVXx3vjTx2YaZ0RRiNp8hTztIW/VLtFw\nwcbO4jyw9xYp8/gKfA+GHI8WjVV+tbfuEMczlyXnFp3XXCTUUUgV7VKSy41H\ngmpzVvzMA9mMhnNrpEdAkSriu0p0aLpWOpQjkGC3z8JfLoo0a+yV6aaMQUA3\nUl50HFla4d7lPDgV9Wg9S0CEqzdfUvAPQ/7pXFs8hncSpYnEEbECbcP+HVKq\nvVDY8+R99j86s1jGSYw61i139rxbbRgXK3jp75GEkA1Uypd6yjb6aNQAf+m3\niJhK1K512hmN/hnXedpNgVQtgNiilZmIsx0dgLjnr+zUjdetEAqxrDd12Xnn\nf44r0Ac3O84SEZvprFEmEYcWNU9jYYkK7x4utxL9jPZYLX1wJnR2kWegNBC+\nZSDe\r\n=fkZU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"2ef567d49543dbe884cf145339d57619aaedaa1b","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.6_1575364907975_0.6496541984350448","host":"s3://npm-registry-packages"}},"0.0.7-qa.0":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.7-qa.0","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.7-qa.0","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"sudobangbang","email":"605h4n@gmail.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"2fe9d9a0f1b098566f293b1c3ffc9ca652f5e07c","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.7-qa.0.tgz","fileCount":49,"integrity":"sha512-rOtsHHgEpj7yE9XjIcoSesoAdEuXNCi9XfBW28d3O71sx793KkL9aqHMRaq87Jq5JyUJqOgE4uDUxJsgdOBspA==","signatures":[{"sig":"MEYCIQDb50p/iWjVc5DGicfTZs9hYr7RdEik2StVH6TfWcsQiQIhALKlIC17Y3aLdv5hjFwrg6RigAZ+bMiTddrB2Eh34mcL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd75ZGCRA9TVsSAnZWagAAyFYP/2YGow2r640wTQ/wVQKH\nUVcxkmCbkCk1iJwJqO/HsYPVRuyzNls2gjQ4F+oYkIVjj1knhYjjgOfWptZI\nLfreVpmRTbT5CuySdQ1Chc0sg449A5UqH0bGe00/zITNjnfvYwlHgdV1Tt/g\n+SoWYicD6rTii4+otidRIH0mxKWyl/nld9uW+IdbUyiBmvnTEJ4eJEvtOtGQ\n7Ea46UePoZGuzRWUtMQp/IE+7O5mMOkJjNSP9UcYRSEYBwzB3CEKHVCQqJn0\nmrhb3itwTibtGi5sTf66CN2DUU3kpxoK9Zkfo1m2DjQN0l4S5aYTKehkQCc4\nyyHOwRaR869h3oFL8zjCNNXYEYK8ozzgrF/T65FnlnMr11oMgfPt1U62UxMc\njv+Z7ueWIsk/9r2wD3eeHO0AdSi+PF/KmKgndfBdOQxX4cp+7cCND0SBnbH4\nU+JAXzT5v562VmauR216gBs91np7vQJlNtYIVnGmGryd52U4QRkeVL0C12zH\nCsgKhx2ce59C6q8eY/1JVva1kS1cuDAZoh3rEze4YB1zu1QOPnz9zksU283G\nZEQY9E894rWY6wTD4zm6wkI2L0uoBgy28vpJjpN+LXU+2m78N+RdaYBCIh3g\nvZikquwCAcm00wzFRqrJyk+vZIrvcxsDbxnMbl9Urw0U4zUO1e17zwle17vm\n0QxU\r\n=SxsB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"61144a4c59c9c7f92b18720347185603effa2821","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.9.0","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"10.16.3","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.7-qa.0_1575982662284_0.09764868224689516","host":"s3://npm-registry-packages"}},"0.0.7-qa.1":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.7-qa.1","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.7-qa.1","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"sudobangbang","email":"605h4n@gmail.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"77c94eb991d8d163b022d74532d47a85719fd098","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.7-qa.1.tgz","fileCount":49,"integrity":"sha512-ZLgUWrCAmrBArZN0Ipe4ev9KOkuQ0nIx5lqHnZc+c8Pxrrvbk5Ew61KlnohC9qDqRgj+YkM8lxbL5/fluzUPAQ==","signatures":[{"sig":"MEUCIQCgWBKipaM8d4MRj+KY0IhiHy0j2eku723pPl4Br2IrUAIgColXXnTaz21CJGmW99cSdkzj+77UJVYgcVy9GTd/iB0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99348,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeEvq7CRA9TVsSAnZWagAAT4AP/ig/9p/97T+47Zzh2mwz\ne4gPgL+W5XXFGoYaVm0qw9425rnokOeG8BTr3w7pfO5570QgcPk1PhBO0sV0\n6aPWpuoC6CVVUlwDcUKsv99TIUCpsSJKpZ3ueiKcuAm7mCzliXr9raQoehq9\nbOLX1WeErN+m4iUAyKj3+UfKaXcT7yb1fMhK9PW4ABeeN7wUVUKIVI/30boU\negm9f+V6B3/cYChUlbDXzMFwcJfWgsYfgO/4168/05E6Hjbo51HRnek1YbVX\n3Vx0/SJ/9cvX8HIgr7OuccFmK6TFCxKQvrpRULTJ9cv9QZkmqcnR/4tUz9oa\ntWlml5FTpH13S/83OqxMzFN0SjeONbZazuS7GD7Wr2d1rbBxFYUH+k+liiZv\n/BCUhNGNb132+FGVloqUu28hUYtfyBnYr/yMuRTXMdsBbgvlG1cKIV1erwzm\nih8/7Fe14Aiv0KoJ9V8GMJ7xIgUOKwDQjfsCXYHvUlXumL88XM0fxlozN3P2\nAJFTXhTIoE1UqiLdtqmOdu8Vl4rPX0ntvDLnkShuqGJUKB2Nd2AFAguycJlG\nYM97okGMlq/6MN+7+Rb19xt5j5DxZVwVDLOr6Z2Zu8+zYLwBphStL7qPMWP7\nhN7j8O2Bi5Bgya3GCbTrh6CgClHuxb8gBe2HOD2OwAKwSDZYcGqCd0saJ3FS\ncLq1\r\n=5iR4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"11275c44588f174777f2e434801bab625913be29","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.12.1","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.13.1","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.7-qa.1_1578302138748_0.1570908763860741","host":"s3://npm-registry-packages"}},"0.0.7-qa.2":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.7-qa.2","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.7-qa.2","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"sudobangbang","email":"605h4n@gmail.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"5168ec2e1c64bdee630bea79c4761f6bd8321348","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.7-qa.2.tgz","fileCount":49,"integrity":"sha512-fAzFImLBSVTrgNGyPeVlvxyBwjxSAdw1YaO26+c7J4bYh7Y+IBUUfius0BttWmFjxG5z0uowFuKvtCqkHjH92w==","signatures":[{"sig":"MEQCIECN54pybXO3iDVVXxssLw4/IlXGzoSMVPNDeEHZU0S8AiASYjpowHr/muEQgn+PBklZ9q0Of2kzcSYV/Z5cYrfpWQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99359,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeEvuvCRA9TVsSAnZWagAAg1YP/AknDohjORekDHbd9WMt\nd4V3MqUx5aU3matWjHU+dpk072gVwBhMURCordor9R6RN5cxulOjmR/q0Pi5\njvTxVEBiz8A99fVv7aUWKbUM65uxNouEHQhh285JfIq0KksirywzQ1DfOC3Y\ni0fkpzbuudO2jQTFcEgTB62PKe2HIRIw0p1sgRVRA6AaVEjMDppvleQsF1yT\nTlZjfskwmlN8rILlym+6Ej0rwZ7EOoAMabmyakt4sgMgJcDWNLGsA+vNLCLa\n9m6SxRqAIt7WIVRCB8HTBAtUzEi8bC0WJIL6s9FuqbzAmJ9S0lsqz3at+aCO\nVWaDkO9B0hO0dvNA5Ii4RPGkerIytUYNNvElhLH3dEGfv2tVBVR7xfEGM3vU\nw1SO8X+ZObbYnK4+bxKrammhbrqbKCGIiz1252lnrNvzpg02zI6cPhW6kSjY\nUt4TDQdxghvtdzl6GWruoEC8yrokrsuMakpiHxSuMpfKjkNAu7TAiQkFOBVT\n0YPMYTl/PJblvlnM+tgSMFGXbe0Y66l5EqUaYjfPpEULrHkxGABMe497grFf\n9MFbLbNEAnjdn1ctJrOgfrodpIcdEw0jm1BpVXP/yDA4kBW3yQAjafRLT3ho\nZF/DeLycOVPG1x+9OXVbwHIK3XTr0zm9GkBw/J5XKVyS0NUSpl+ScAyLq2g1\nbcg2\r\n=heh9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"974999a6d95ab07bb7640ea9dd89fb8edb37458f","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.12.1","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.13.1","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.7-qa.2_1578302383142_0.21693130928864268","host":"s3://npm-registry-packages"}},"0.0.7-qa.3":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.7-qa.3","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.7-qa.3","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"sudobangbang","email":"605h4n@gmail.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"277a8391c175a6060064ecaf42c8dfc99f55fa8f","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.7-qa.3.tgz","fileCount":49,"integrity":"sha512-cEZKdc4Pu9jjWHLBmBxcSd67vGhBP1MU7vmga0/U5fkbJsLFHLoxLM9zYcgnpWAz3NDlne2hB0lPWCVHaZ+SnA==","signatures":[{"sig":"MEUCIQCYLoKzmGNp6ZO2Sch/+jTtsqGIVnBlBfqWgvoFFSobdAIgVAfDeKYmeChFJPbAKPBbUvQl+SOAHbPREJQx5C1hV9E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99689,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeEv8ACRA9TVsSAnZWagAAbIYP/ihMRDMU/QCMe61oWJ62\nJ9j/n1Dnxc2VWIpXrRoeIsjXbzqv4wSnbkwHeEldgVP5n1+kKwpC62J0nK3p\nIdrfKYFWSkL0nuMQhrTyxJqSRxqt+N+OQnun9l0mvFjogw4ODQ7/dETuz04i\nDwexxnosrYbbxGzmEj7aY2pf61MAtKvsDdNtUKI36jxR145aIn1+rwxtbYwb\nhW2kDJNP/UJtX4XLnMgIcgPyE0JgMDTBmjZmVC/e2Wtc1Yzi/14SV1kcsi9i\nvGpmr5suWt/qy1NWP4TIFrX/jk1vSoGSnPe9AeIIUGF8NIL5JKE95nmwvFq2\ndQkmbDKQ/Ze0OrdyCWsN+cGGo+l8j3uKbma0FBX9YOPRV7Zw00gAmQKggCiW\nhty1+UVhUoS6mOU8AZKZwlkPJClYURngZTxsQSe9FrWXvz0HpSFEdMVBr1Oa\nF5Si+qecGga/Wx9/b0HMbFnUUMr09j1Smb1HNQs+LlqXhaeGPY2WjTIbX8Kn\nxei/R5QixVOmTMxhI3eOBivby6Z2fAhIp+ZszDqMkHeyXCCkKL0R86LD+jQq\nN4oE3g7frjblGdD74pwC37/d6ZaRGf2zfHhJ5OR0gv3erqaZiLqqPVjxu0vI\nfUpJTqOl8G9IvOY4Y+qLC9mB4po3YSgzoMRGACoSiC9qkE3Z3xGwzIHaW3gX\ndM7r\r\n=nrsR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"b8033bedd255120d33a892874e0499057dfe8b01","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.12.1","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.13.1","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.7-qa.3_1578303231650_0.9463244015465222","host":"s3://npm-registry-packages"}},"0.0.7-qa.4":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.7-qa.4","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.7-qa.4","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"sudobangbang","email":"605h4n@gmail.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"e1fa1c9f2754f1987a47a1f41f6228aa150368ce","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.7-qa.4.tgz","fileCount":49,"integrity":"sha512-h9nBu8n4P3NOX6iv0XS0GI7CLjVMtIn3JC2+YlzQIywjPf6ghTklxBkZTbBwh3qlhZWO82vKbIs2y544ZuBMww==","signatures":[{"sig":"MEUCIQCH+58/eSgvW2JrU4K9Mdi2r/+JHh5vEYng8RZtWz6LlgIgHD8IIGpfXoahVxRdmLAhIu1TuL8+I3cSzWl40Gb13V4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOYVZCRA9TVsSAnZWagAAlksP/3Z3epjnLnWjIzWUMf4u\nx6H2hGHxSDbw+Gny7/LWgeNJD3JB59KJ+MGHKQXnNqmyYCeCqJ0OiA+Tt8YT\nDy+l0BT18UgfFdJ5+gOCfYzN/2scI8nuOWR12bqUdVHJUDPtXaxZVYB4jHQw\nd6L26H08CaaKesyAW3zVbaB0hhqPFJvC7oQ7gRu7f5VAfKCl5vqXq7kZNMX9\nWBEr3BnPg7344Pb6BmM5TkcqV7bMo7qhYeY/MZlTmgECsUWMDqW4Ka6RiXtz\n2bY4KWgTFByrI5MQ603lS/9HvB+lgxMxagAHhbjuFtvahRSl7qKS270JCavS\ncHG7ULlBfJpCMQ4YRusOklCY5UHOITq8VbSNnG4hxVq4QvI1fLKv1N0R0Q41\nJxAZ47fTy6jZN7T4R5MRKzXoKVT4z38xLijystrqfTn1+atUa+Yk8TdBOhwI\nlfWOX9QPdO80ivxNyZEC33dlE1sg2+I6uQgPucw5uWsDY4Hw854iE/Jmgd3C\n5CeWBPOzOsGTLYeX8n8ZOtGHdnYZy7d/l7qqHA1pU9n+BEL0ivssysDFmBnn\n8icx1lR/9r6DhW2QWpDK6jHxgZ5eBoepH7l0yviXbHFTBmLuzFoauJ60PzLO\ns6IigLDwKKfEcbrQ6t16aMRGUKAA3SSSXOu20eBpg+Caec5RSS0eaqVSoFrH\nhJA/\r\n=wAmD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"bc1aabcb697aee0be9df95e0f2d0f055995a667a","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.12.1","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.13.1","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.7-qa.4_1580827992712_0.9078944853486999","host":"s3://npm-registry-packages"}},"0.0.7-qa.5":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.7-qa.5","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.7-qa.5","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"sudobangbang","email":"605h4n@gmail.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"a172511bcdbb38fb2a17047752637d154eddb160","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.7-qa.5.tgz","fileCount":49,"integrity":"sha512-8wZgnNjtBb9ZDGA2Jm/TeBubY6QROyIR+ITY5NCtenCvcoJISK4cGWTVs1Clk2bKsFZ5dbIwHIKY39HQnJQcaw==","signatures":[{"sig":"MEYCIQDIOIciQqffDE2vmeC88DAlJOtFkRnk2wpcNnu63KeL1gIhAMMeHhQnJ1LjnYGyhNIgQucbk0rVAdFEgiaP904T89v0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100134,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOZGuCRA9TVsSAnZWagAArbsP/3zNLomWj020C2VF8Mj5\nJqogjUGuDFqn1u/Wx2eQNa/Pa9HvPQyrM4XjdEjhFxUAEkZcC6MvZUuZPFVd\nSFuW/LCW3eN28LFSzCjswekDdKt4sjH96L6IIIx/IYD6ciSV8UUvXrJ9+wDR\nLcZBaUSZ4ZH2Gs6VwW/RKJped7tFO8eTejCl+r1SEXfWx6ZWBc9ZsWt8pQlQ\n4FkhXnsvDEx+lsBQ/+NyoQQR7MFqkksgPWhVmYI0NZUkJverv4HJ4oXX1/N/\nIiwdZkfItEsL++300LK41aRh2CjGX9lN9KYCJPPSOcN22Itop3mQ/KAbFmaq\nC30Q2xFHdSQ6lxvSoXZAJ9wCS6eRKINyi4HGDmF1KKSTnRK/eRrmXCcZ+7cE\nn4ewh4bLQC2hJnXH7EvaZbCntaXei5dfU3y2b5GkL6eS0R8QzRK1Wzh4oCvj\n+b4HmjGRNUebrCvZCfDYNUNb+2wm3k3oJ8fxG6YN9NdKMJX0INHwJCLNs7E4\nAm+cqdZqVpjBOvJhtkHTWnKFzAvD2QXt+4XngBajenvfVnXD5cbKglkeID9Z\nh7i7XGBXeO70sJYm2OaIrcT1e10Dd69/IRvdsLqDW8/F4e/HSf/FawaIZzsw\nXDPF3wSzvnj4tjjMvyyMm9gZNaZeciHgZaFzl5d5AXvcy8WqUhRSdchnXJtk\nw8Vp\r\n=6GaX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"10b9c51dd61e56a5f9a025fc06c7382d198df824","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.12.1","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.13.1","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.7-qa.5_1580831150298_0.4471903960639789","host":"s3://npm-registry-packages"}},"0.0.7-qa.6":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.7-qa.6","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.7-qa.6","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"sudobangbang","email":"605h4n@gmail.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"0642023582716bbacbf20cab7e21c61dbf85440f","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.7-qa.6.tgz","fileCount":49,"integrity":"sha512-WlvD7Jr5kT7kt4/H5NkFw1E0Ag369U7gelbS4OIUecR3gqoF50eQkttKLz/gsTd4jgb6EILog7nayOco1HKQ1g==","signatures":[{"sig":"MEQCIAERAl6OOHbnnmkT+K+gYnAdsIT4l2yNQJv1+yw+hHroAiBv5MDBA+1BL9aE2N5HGW+twHNOj82L417usuo4Vyo8HA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOoa/CRA9TVsSAnZWagAA6sEP/i0euJaEkZN3/rrkgd7K\nLHy8KVp/449w11utQgWGyflST0zOyKJvPfXNij9FUP1hbIZfjsqZKRtERdc6\nuNpRQAueoVZJMXk2lGf8Nz/hD0XNFbWM901f7ofWmJNaqNat/KdONSWm3AoR\nLxZflZVCI18M5GdvS0WngppGVB5LN5oSJoAVONq8DolmGgVVhtdHKohosRVV\np7TH4goxMdbsxDaTB0jQkSX4WYAk2etxkKvnuUc0qrucp0RIBWlZECMGsFIx\nNQLHiN0YqUl/rrriJDMLluWyyPSv6Ntjh1JtzBRXzS62i6fPmbiNaIt8Ciic\nI3oQZOwsb+V2t71QpWp1j/7Kj5GxSLH3/ZtMUJVgBFFOf2v4iDpJKK0qRupi\nDLkBBV0XWWtuFyHF3ngBFSu+3C52bz6gkUJ7274OIbLvOkmw1OoAM/hOsA2P\nxMT0+jlK6n0quHvkl2Ri1AgGmQSCzFAPMqKBuV31NjXVI4uAzIkHjrzg1Hf7\nE0hdP2IPlQ04NbQy7fVaGRTqPa6b6xVKeHheYqHo/33LTkqVMGOLauJpipT5\nIVx7c9wu45VskEPjO/w2MTXeS5ydwRTAAI+2bfTwyiuFEuXTBFIi4fn5iK/T\nJCChTMmwG2mxSdeSBtfUlbWZL0n24t1tNo6dJUqcAaLNIoAXJa8hfbGNnsPF\nWyM8\r\n=xHfH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"71b365f77c6465516d43f0cf4a2bcc493b1b46c2","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.12.1","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.13.1","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.7-qa.6_1580893887127_0.2535558754189129","host":"s3://npm-registry-packages"}},"0.0.7-qa.7":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.7-qa.7","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.7-qa.7","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"sudobangbang","email":"605h4n@gmail.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"544119c53d3446928aab2f7e453db3521a91edc7","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.7-qa.7.tgz","fileCount":49,"integrity":"sha512-ycUynUHkmq9DV+4l9+lHYu/j7qRIH7BWg1PK+nE9f8yeWJeeRUuDKMDxdQAcvRfBXEk/4WXbFhtTaOHgBcMfBw==","signatures":[{"sig":"MEQCICrhQW0Zi5Tzc17uxx59GgSTwajOdswfi5peVfrcIhMpAiBOnKECA+6RHHanvQixobeT7kOcjG3H4C5SfDsvUSBtEQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100554,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOon2CRA9TVsSAnZWagAA+38P/RpIwQMNIiMOSYTp0VtM\nV5eticOIZuvdXWLjt/MKQNH+sHf/IOxh390bsXd41wWUpoux9ATJr1FlYpX1\n/wN6NXgFrxk87F++c4YeImeXzrU32bXxmb2WhtmOlZ4xVCALp3SEIVhmRE0u\n4Jv4rjtYyTftEVJUo/OTDZVHSmnSVN4yJMpnmBqpd4FUj2+po1AuU954Ooi8\nzBBFr3vEUbxfcD/FLLivfqcSm5MWGE1Y3FK4Zd65WB22cJ3vLBb4QPgBauyi\nJF55V9BhN2okaBSMf5TnEDJlzXUBZDv5knRJOlIUAnb+G9SzRCuNuzIbwnJu\nnCOa1gWjN05fAgoT/EJ6dpSsm3UFNS5MocIR5gxqdE+Y0rggS/O9K8wYH/mS\nqvN3iCE/9ivrMt2+mzsl2WRbswz7u/gbmhxBHHB5E4KF+ImL+es2rzWKyLgy\nbzVJK+yNdCbnBDrfyzA2C2LKzwiRxQvuplqzpOxo5xyVY+y3ROBPELJZWIzF\nER3xFse/8Fh2liagvp9kENaM7S+u6jet13IqLLuPgzC3Clu+nVg9jLnpelHy\n3XH9wQFLJWZpftIXpfSZFbt8HD05FS8mJCDtYdCOnT07mYhl82eh55Wd68HX\nsKeeuebRlcn/GAGiSgTbhZ9c+kJJf+JUotN3Ed1T/g325pbNDPlh7lkuY1vB\nCgHl\r\n=DSmM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"0f7542296e86bae04e93c439fda0d8ea42e0160d","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.12.1","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.13.1","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.7-qa.7_1580894709963_0.7154733679018741","host":"s3://npm-registry-packages"}},"0.0.7-qa.8":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.7-qa.8","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.7-qa.8","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"sudobangbang","email":"605h4n@gmail.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"b1ed9e62be26ef8fb73bf10d564b4a98708665cb","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.7-qa.8.tgz","fileCount":49,"integrity":"sha512-Ur5BlgO1euYi7kwO2xpsiqm5l/a1gpJ083hau7wrOlUzrgydSPCM0u2uLO7Lla3HGweLPRr6MNFLeyxLBMOfgQ==","signatures":[{"sig":"MEUCIA95Ei2rF1BsWjQTyY1WrJ7KyUCuqNDFeQ5crwhuv9zZAiEArzu7piIz5xecu3weCMdpwPUIYWcxkNcp0gK+Pk7grJk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOosbCRA9TVsSAnZWagAAvlIP/Ry8jITdVoHBHbvkQune\njGP+xuPY+P9xAWUwjI6MqnVuZgGjzW9gnd3bPmdtf1yzoqP0ZLwWc4a17B5Y\n2tNVVGl2zAE/WisfNbcDoknBwss412p6xIfbYZWtc6V5D7VR7IwZTtYfumai\n05svCvc1Zpc1GtjspT1GznsQZTj8JxH9CAteNBKjFYs9vV51KRlzGNWsoLZj\nXUTGbpELbMkKuAcbbb5gCBfuPqMk0myw5KomuoQ1lY1kwP6morMmZRjMwjus\n9BM+eKr1ItRcsohn/PVFW0p2oTcOd2JCRx0IPJqrIV82uX5953vOwA4th4Ex\n7qBz7pFkqv6qwn4a2HCHem0ER4G7I5eeWLkkDT+p61et1dKxH1z5NTOtAM56\nlglulSWlaR4Ynk70YJ4jd677dyN7wB1Oero+KIiaEQ+BPlZX2M2pjW1I+LTP\nkI5N7I0BP8/0ROuqu5zbabsUeZOLHlWPTUaGMJjhKgY2TPkQqWOg4v3T1R2d\nS/X8ZuYeZB3nFMdYM7ub3bCe9erC8Q77IbJa8V2kgvdgVhJO7WKpfLhfyyxM\n+AIXdM97n1HQ7upLBd/ZpbJgsfnVNyiXaIBsZcmo3NcYvjk8+p1Wgy7DmuYD\nMD1yMSr2IgK9zaY0yTCPvMxK2uoQ9Lj9i29ReZDP1vNks92mnmuMS9bJv5ud\nGIU5\r\n=gexV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"4b05bd0612aef7437af7fe91e62ae5dd9d81717d","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.12.1","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.13.1","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.7-qa.8_1580895003155_0.6765758078944046","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"@goodgamestudios/cxf-fullscreen","version":"0.0.7","keywords":[],"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","_id":"@goodgamestudios/cxf-fullscreen@0.0.7","maintainers":[{"name":"amartin-ggs","email":"amartin@goodgamestudios.com"},{"name":"andreaspizsa","email":"hopster@gmail.com"},{"name":"azeino-ggs","email":"azeino@goodgamestudios.com"},{"name":"boczujda_ggs","email":"boczujda@goodgamestudios.com"},{"name":"cgeisler-ggs","email":"cgeisler@goodgamestudios.com"},{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},{"name":"ddepaolis-ggs","email":"ddepaolis@goodgamestudios.com"},{"name":"ggs-zzhou","email":"zzhou@goodgamestudios.com"},{"name":"goodgame","email":"html5@goodgamestudios.com"},{"name":"guest-ggs","email":"html5+guest@goodgamestudios.com"},{"name":"igorbabkin_ggs","email":"ibabkin@goodgamestudios.com"},{"name":"jenkinsempire-ggs","email":"jenkinsempire@goodgamestudios.com"},{"name":"jenkinshtml5migra","email":"boczujda@goodgamestudios.com"},{"name":"mabdallah-ggs","email":"mabdallah@goodgamestudios.com"},{"name":"oaly-ggs","email":"oaly@goodgamestudios.com"},{"name":"rschmidt-ggs","email":"rschmidt@goodgamestudios.com"},{"name":"ssydorenko-ggs","email":"ssydorenko@goodgamestudios.com"},{"name":"sudobangbang","email":"605h4n@gmail.com"},{"name":"tschrader-ggs","email":"tschrader@goodgamestudios.com"},{"name":"vtenekedzhiev-ggs","email":"vtenekedzhiev@goodgamestudios.com"}],"dist":{"shasum":"529de203def2ec16f571cfefae43753314c91193","tarball":"https://registry.npmjs.org/@goodgamestudios/cxf-fullscreen/-/cxf-fullscreen-0.0.7.tgz","fileCount":49,"integrity":"sha512-JPBY9i1BppKWKVxZaL5z9XlRiujULYpyQ65NYR31I5U1Es/b/czIEB5LcLn3DYYGiOt+S3UyxYumqOj4XHoGsA==","signatures":[{"sig":"MEUCIQC9ZXLUxFYQBiRuDb1VlcBl8QbTUzjSLeoAk7pcnS1EZAIgYd9czDTlCBUgYkj6Ekacl5WQgCfyuqov87dA7hCfUow=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":101065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTk56CRA9TVsSAnZWagAAF4UP/21JPQCPb1zItkeZPl66\nz2nCwrDct1ouZ5Op7A1bLCaNaDqVywvcPTpRK+7m/jK9+8nbvgGoJswzPHdC\n1GLx/4KWEUIMIHz400TkLtqIt3dj7CCeN4v1rRLpcc9M+4bx8sR0ja4sdFe+\nUbBQW3c6IZcT9alh8wWz3rbd59DGxpNr475E96nAFe7OYDqEMj8goYx/omm5\nnW9aCfWmprARTpNQP7tm2pPA54KxZnk30PF+MBZ9GGfkB/f8y6CYuOrbzi8a\nT4jjEkdpf5N63+Av0aa4f0eTQwfUBp2WW37NWcjvwsJVB9olYhomQUdJxL0/\nX87ld7G5Wm2iQ5uuxfZoURyaxsdPD0jLpAotN3elucKZ9pYjeC2il8bj6ce0\nUt+6nbS5bVkSS5PQU+3Mj7X0QysDZfxYgZaq7Hcpjr4/ZyqXSt1Bl+MK0B4E\nIh+WlVmIEAZRyg/fQflqUxsMjhB+2Zxpj8R8O+c6m9iNTVB3YXQj/+IOIgoo\ne3iZ+lieG42mYuw01x0G8H0jsu6FROP4RzUmv5hnqcnbd79fkSOT22ENuHM1\n27f1o9zdd6PGUoCnSaguz4mrNAP3xrUO9QLE7+uEX0HpuTjQT8PGWSLfQLae\n9TxNWsjH8kUbtjWMnkLGSOGeK5xttwPCf9qsGGkldXolffJKNJQWfyI29eSB\nXikD\r\n=l+m0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"# `cxf-fullscreen`\n> Fullscreen support for CXF\n\n# Motivation\n+ Games are loaded into an HTML `iframe`.\n+ CXF extensions are loaded into `iframe`s as well.\n\nThis creates an HTML document structure like this:\n\n```\ntop(window)\n|\n+--- iframe #game\n|\n+--- iframe #cxf_1\n:\n:\n```\n\nIf the `#game` now switches to fullscreen mode, it does so by calling `requestFullscreen(document.body)`. The browser will then go in fullscreen mode, showing only `#game`, while hiding all upwards and sibling elements.\n\nNext, a player wants to open a CXF extension, eg by clicking a button. #cxf_1 will remain invisible because the `#game` is fullscreen, hiding all parent and sibling elements.\n\n# Solution\nInstead of using `#game` as the fullscreen element, we use `top(window)`. The difficulty with this is that `#game` doesn't necessarily have access to `top`. To make this easier for `#game`, we install a few helper functions in the `CXF` global context which the game can then call to toggle fullscreen mode:\n\n\n+ `window.CXF.toggleFullscreen()`\n+ `window.CXF.requestFullscreen()`\n+ `window.CXF.exitFullscreen()`\n+ `window.CXF.fullscreen`\n\nThese functions work across all browsers and resemble the standard Fullscreen API (with the exception of `toggleFullscreen()`, which is not part of that standard).\n\n# Building & Releasing\n\n### Test\n\n+ We lint all code with `xo` as part of testing.\n+ We want 100% code coverage. This is ensured by `nyc`.\n\n```\n$ npm test\n```\n\n### Release\n\nRelease runs `test` and `build`, then bumps the `version` and commits and tags this version using [standard-version].\n\n```\n$ npm run release\n$ npm publish\n```\n\n### Build\n\nYou likely don’t need to ever run this manually. Use Release instead\n\nThe build step bundles the package into `dist/index.js` using `parcel`.\nTests are run before building to ensure we’re building a working version.\n\n```\n$ npm run build\n```\n\n[standard-version]: https://github.com/conventional-changelog/standard-version\n","gitHead":"832c35e0c434000d298172d4827a84585b8a890f","scripts":{"bdd":"npm-run-all -p bdd-iframe bdd-parent","lint":"tslint './src/**/*.ts'","build":"webpack --config webpack.prod.js","GO-LIVE":"yarn build && yarn deploy:production","QA-TEST":"yarn build && yarn deploy:qa","release":"standard-version","deploy:qa":"npm run release -- --prerelease qa && npm publish --access publish --tag qa","bdd-iframe":"cross-env APP_TARGET=iframe webpack-dev-server --config webpack.bdd.js --port 3331","bdd-parent":"cross-env APP_TARGET=parent webpack-dev-server --config webpack.bdd.js --port 3330","deploy:production":"npm run release && npm publish --access publish --tag production"},"_npmUser":{"name":"chadestioco","email":"cestioco@goodgamestudios.com"},"commitlint":{"extends":["@commitlint/config-conventional"]},"_npmVersion":"6.12.1","description":"> Fullscreen support for CXF","directories":{},"_nodeVersion":"12.13.1","dependencies":{"fela":"^10.6.1","readuz":"^1.0.0","fscreen":"^1.0.2","fela-dom":"^10.6.1","@goodgamestudios/cxf-ready":"^1.0.1"},"postinstaller":{"see":"https://npmjs.com/postinstaller#readme","add your config here":true},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"husky":"^3.0.2","webpack":"^4.39.3","cross-env":"^5.2.1","typescript":"^3.6.3","npm-run-all":"^4.1.5","webpack-cli":"^3.3.8","eventemitter3":"^4.0.0","webpack-merge":"^4.2.2","@types/fscreen":"^1.0.1","@commitlint/cli":"^8.2.0","standard-version":"^7.0.0","webpack-notifier":"^1.8.0","@types/webpack-env":"^1.13.6","webpack-dev-server":"^3.1.10","html-webpack-plugin":"^3.2.0","clean-webpack-plugin":"^3.0.0","webpack-bundle-analyzer":"^3.3.2","awesome-typescript-loader":"^5.2.1","@commitlint/config-conventional":"^8.2.0","@goodgamestudios/browserslist-config":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cxf-fullscreen_0.0.7_1582190201757_0.2951286668460069","host":"s3://npm-registry-packages"}}},"time":{"created":"2019-08-01T15:35:40.617Z","modified":"2025-11-25T15:09:52.588Z","0.0.2-0":"2019-08-01T15:35:40.871Z","0.0.2-qa.0":"2019-08-08T14:40:24.494Z","0.0.2-qa.1":"2019-08-08T15:15:38.639Z","0.0.2-qa.2":"2019-08-09T09:02:19.760Z","0.0.2-qa.3":"2019-08-09T09:35:57.502Z","0.0.2":"2019-08-09T09:37:14.174Z","0.0.2-qa.4":"2019-09-04T13:33:38.925Z","0.0.3":"2019-09-04T13:34:32.940Z","0.0.4-qa.0":"2019-09-16T09:31:39.189Z","0.0.4-qa.1":"2019-09-16T09:36:00.995Z","0.0.4-qa.2":"2019-09-16T10:41:39.038Z","0.0.4-qa.3":"2019-09-16T10:46:11.324Z","0.0.4-qa.4":"2019-09-16T12:45:30.529Z","0.0.4-qa.5":"2019-09-16T12:57:36.736Z","0.0.4-qa.6":"2019-09-16T14:37:18.879Z","0.0.4-qa.7":"2019-09-16T14:38:55.526Z","0.0.4-qa.8":"2019-09-16T14:40:31.466Z","0.0.4-qa.9":"2019-09-16T14:52:01.259Z","0.0.4-qa.10":"2019-09-17T15:44:43.679Z","0.0.4-qa.11":"2019-09-17T15:56:47.904Z","0.0.4-qa.12":"2019-09-17T16:13:24.847Z","0.0.4":"2019-09-27T15:08:18.609Z","0.0.5":"2019-09-30T08:35:10.470Z","0.0.4-qa.14":"2019-10-22T08:53:51.275Z","0.0.4-qa.15":"2019-10-22T08:59:27.150Z","0.0.4-qa.16":"2019-10-22T09:00:28.348Z","0.0.4-qa.17":"2019-10-22T11:17:53.161Z","0.0.4-qa.18":"2019-10-22T11:59:20.208Z","0.0.4-qa.19":"2019-10-22T12:32:49.187Z","0.0.4-qa.21":"2019-10-25T09:20:27.047Z","0.0.4-qa.22":"2019-10-25T09:34:31.852Z","0.0.4-qa.23":"2019-10-25T10:41:20.519Z","0.0.4-qa.24":"2019-10-25T10:46:49.361Z","0.0.4-qa.25":"2019-10-25T11:05:51.190Z","0.0.4-qa.26":"2019-10-25T11:07:44.269Z","0.0.4-qa.27":"2019-10-25T11:19:10.977Z","0.0.4-qa.28":"2019-10-25T11:21:52.846Z","0.0.4-qa.29":"2019-10-25T11:24:13.951Z","0.0.4-qa.30":"2019-10-25T11:39:22.942Z","0.0.4-qa.31":"2019-10-25T12:36:11.126Z","0.0.4-qa.32":"2019-10-25T12:56:18.615Z","0.0.4-qa.33":"2019-10-29T09:51:10.298Z","0.0.4-qa.34":"2019-10-29T09:58:22.231Z","0.0.4-qa.35":"2019-10-29T10:05:36.466Z","0.0.4-qa.36":"2019-10-29T10:15:56.530Z","0.0.4-qa.37":"2019-10-29T10:41:35.924Z","0.0.4-qa.38":"2019-10-29T12:09:35.136Z","0.0.4-qa.39":"2019-10-29T12:24:54.125Z","0.0.4-qa.40":"2019-10-29T12:42:20.983Z","0.0.4-qa.41":"2019-10-29T12:52:14.592Z","0.0.4-qa.42":"2019-10-29T14:12:48.784Z","0.0.4-qa.43":"2019-10-29T14:58:22.845Z","0.0.4-qa.44":"2019-10-29T16:01:14.404Z","0.0.4-qa.45":"2019-10-30T08:49:13.815Z","0.0.4-qa.46":"2019-10-30T09:40:32.845Z","0.0.4-qa.47":"2019-11-18T12:58:06.529Z","0.0.4-qa.48":"2019-11-18T13:21:16.172Z","0.0.4-qa.49":"2019-11-18T13:32:38.886Z","0.0.4-qa.50":"2019-11-18T13:48:54.539Z","0.0.4-qa.51":"2019-11-18T14:14:07.724Z","0.0.4-qa.52":"2019-11-18T14:21:50.433Z","0.0.4-qa.53":"2019-11-18T14:45:36.234Z","0.0.4-qa.54":"2019-11-18T14:55:34.758Z","0.0.4-qa.55":"2019-11-18T15:01:04.352Z","0.0.4-qa.56":"2019-11-18T15:14:45.169Z","0.0.4-qa.57":"2019-11-18T15:20:26.417Z","0.0.4-qa.58":"2019-11-18T15:41:34.399Z","0.0.4-qa.59":"2019-11-19T11:53:50.473Z","0.0.4-qa.60":"2019-11-19T12:02:01.274Z","0.0.4-qa.61":"2019-11-19T12:17:48.717Z","0.0.4-qa.62":"2019-11-19T12:28:55.154Z","0.0.4-qa.64":"2019-11-19T12:32:39.067Z","0.0.4-qa.65":"2019-11-19T12:42:09.524Z","0.0.4-qa.66":"2019-11-19T13:08:48.610Z","0.0.4-qa.67":"2019-11-19T13:55:22.622Z","0.0.4-qa.74":"2019-11-20T09:35:46.949Z","0.0.4-qa.75":"2019-11-20T10:12:11.151Z","0.0.4-qa.76":"2019-11-20T10:22:34.934Z","0.0.4-qa.77":"2019-11-20T13:19:08.375Z","0.0.4-qa.78":"2019-11-20T13:31:34.185Z","0.0.4-qa.79":"2019-11-20T13:55:28.755Z","0.0.4-qa.80":"2019-11-20T14:16:14.695Z","0.0.4-qa.81":"2019-11-20T14:30:02.648Z","0.0.4-qa.82":"2019-11-20T14:44:43.549Z","0.0.6":"2019-12-03T09:21:48.116Z","0.0.7-qa.0":"2019-12-10T12:57:42.434Z","0.0.7-qa.1":"2020-01-06T09:15:38.947Z","0.0.7-qa.2":"2020-01-06T09:19:43.241Z","0.0.7-qa.3":"2020-01-06T09:33:51.767Z","0.0.7-qa.4":"2020-02-04T14:53:12.860Z","0.0.7-qa.5":"2020-02-04T15:45:50.397Z","0.0.7-qa.6":"2020-02-05T09:11:27.261Z","0.0.7-qa.7":"2020-02-05T09:25:10.167Z","0.0.7-qa.8":"2020-02-05T09:30:03.339Z","0.0.7":"2020-02-20T09:16:41.903Z"},"author":{"url":"https://github.com/AndreasPizsa","name":"Andreas Pizsa"},"license":"MIT","keywords":[],"description":"> Fullscreen support for CXF","maintainers":[{"email":"rschmidt@goodgamestudios.com","name":"rschmidt-ggs"},{"email":"ssydorenko@goodgamestudios.com","name":"ssydorenko-ggs"},{"email":"tim.schrader@stillfront.com","name":"tschrader-ggs"},{"email":"html5@goodgamestudios.com","name":"goodgame"},{"email":"boczujda@goodgamestudios.com","name":"jenkinshtml5migra"},{"email":"html5+guest@goodgamestudios.com","name":"guest-ggs"},{"email":"hopster@gmail.com","name":"andreaspizsa"},{"email":"cgeisler@goodgamestudios.com","name":"cgeisler-ggs"},{"email":"anton.martin@stillfront.com","name":"amartin-ggs"},{"email":"jenkinsempire@goodgamestudios.com","name":"jenkinsempire-ggs"},{"email":"cestioco@goodgamestudios.com","name":"chadestioco"},{"email":"abuhlerschuenemann@goodgamestudios.com","name":"abuhler_ggs"},{"email":"emorozov@goodgamestudios.com","name":"evmoroz"},{"email":"skunkbot@goodgamestudios.com","name":"ggs-skunkbot"},{"email":"stp_engineering@goodgamestudios.com","name":"stp_ci_ggs"},{"email":"it-office@goodgamestudios.com","name":"it_office"},{"email":"sklyarenko@gmail.com","name":"iskliarenko"},{"email":"pverza@goodgamestudios.com","name":"pverza-ggs"},{"email":"rtryputsko-ext@goodgamestudios.com","name":"rtryputsko-ext-ggs"},{"email":"nturai@goodgamestudios.com","name":"ntggs"},{"email":"prosenboom@goodgamestudios.com","name":"prosenboom"},{"email":"amatrosov@goodgamestudios.com","name":"sashamat"},{"email":"mlesanibahri@goodgamestudios.com","name":"mbahri"},{"email":"mschmidt-ext@goodgamestudios.com","name":"mattiassch-gg"},{"email":"dviuranov@goodgamestudios.com","name":"dviuranov-ggs"},{"email":"nvrkic@goodgamestudios.com","name":"nvrkic"},{"email":"rpodlinov@gmail.com","name":"keep_it_simple"}],"readme":"","readmeFilename":""}