{"_id":"@codyjasonbennett/react-ogl","_rev":"16-a2d8d9ef4884e794a7a089f44a7ca410","time":{"0.1.0":"2021-11-12T20:30:46.350Z","created":"2021-11-12T20:31:57.826Z","0.0.0-alpha-0":"2021-11-12T20:31:58.044Z","modified":"2022-08-26T14:29:09.779Z","0.0.0-alpha-1":"2021-11-12T20:32:55.235Z","0.0.0-alpha-2":"2021-11-12T21:16:38.952Z","0.0.0-alpha-3":"2021-11-12T21:17:56.252Z","0.0.0-alpha-4":"2021-11-13T02:56:06.045Z","0.0.0-alpha-5":"2021-11-14T05:59:13.193Z","0.0.0-alpha-6":"2021-11-14T11:59:48.887Z","0.0.0-alpha-7":"2021-11-14T12:00:27.242Z","0.0.0-alpha-8":"2021-11-14T14:26:43.835Z","0.0.0-alpha-9":"2021-11-14T14:27:20.537Z","0.4.3-bundlephobia.0":"2022-06-15T08:36:43.810Z","0.8.0-test.0":"2022-08-26T14:29:09.709Z"},"name":"@codyjasonbennett/react-ogl","dist-tags":{"latest":"0.8.0-test.0"},"versions":{"0.0.0-alpha-0":{"name":"@codyjasonbennett/react-ogl","version":"0.0.0-alpha-0","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.51","@swc/core":"^1.2.108","@swc/helpers":"^0.2.14","@swc/jest":"^0.2.5","@types/jest":"^27.0.2","@types/react":"^17.0.34","@types/react-dom":"^17.0.11","@types/react-native":"^0.66.3","@types/react-reconciler":"^0.26.4","@types/scheduler":"^0.16.2","@typescript-eslint/eslint-plugin":"^5.3.1","@typescript-eslint/parser":"^5.3.1","chokidar":"^3.5.2","concurrently":"^6.3.0","eslint":"^8.2.0","eslint-plugin-import":"^2.24.2","eslint-plugin-react":"^7.25.1","eslint-plugin-react-hooks":"^4.3.0","jest":"^27.3.1","ogl":"^0.0.76","ogl-typescript":"^0.1.40","prettier":"^2.4.1","react":"^17.0.2","react-native":"^0.66.2","rimraf":"^3.0.2","typescript":"^4.4.4"},"dependencies":{"expo-gl":"^11.0.3","react-merge-refs":"^1.1.0","react-reconciler":"^0.26.2","react-use-measure":"^2.0.4"},"peerDependencies":{"ogl":">=0.0.72","react":">=17.0","react-dom":">=17.0","react-native":">=0.63.0"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true}},"scripts":{"dev":"concurrently \"swc src -d dist -w\" \"npm run --prefix demo dev\"","prebuild":"rimraf dist","build":"swc src -d dist","postbuild":"tsc && node patch-targets","test":"jest","lint":"prettier . --check && eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}"},"types":"./index.d.ts","module":"./index.js","licenseText":"MIT License\n\nCopyright (c) 2021 Poimandres\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@codyjasonbennett/react-ogl@0.0.0-alpha-0","dist":{"shasum":"69bf3a788a02823fb255df5dfea693a05c7cf19e","integrity":"sha512-tKamoUGM0/gldeorcIQA0SJrCvpJ0oX9hk5557OJeqGYjYL5uUTPE4aJ+6/y7Omv6KX9Wek0clblClsExzXAEg==","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.0.0-alpha-0.tgz","fileCount":34,"unpackedSize":65258,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGCs0vxKRQUyfMblAlc3I+zbJATk6+HwyoCGxIXLVVjTAiBqJQpOBSFoKQZxGkY5ZtVRx7G4Xf/NxNQ43n8setiJUg=="}]},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.0.0-alpha-0_1636749117889_0.41444316179300644"},"_hasShrinkwrap":false},"0.0.0-alpha-1":{"name":"@codyjasonbennett/react-ogl","version":"0.0.0-alpha-1","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.51","@swc/core":"^1.2.108","@swc/helpers":"^0.2.14","@swc/jest":"^0.2.5","@types/jest":"^27.0.2","@types/react":"^17.0.34","@types/react-dom":"^17.0.11","@types/react-native":"^0.66.3","@types/react-reconciler":"^0.26.4","@types/scheduler":"^0.16.2","@typescript-eslint/eslint-plugin":"^5.3.1","@typescript-eslint/parser":"^5.3.1","chokidar":"^3.5.2","concurrently":"^6.3.0","eslint":"^8.2.0","eslint-plugin-import":"^2.24.2","eslint-plugin-react":"^7.25.1","eslint-plugin-react-hooks":"^4.3.0","jest":"^27.3.1","ogl":"^0.0.76","ogl-typescript":"^0.1.40","prettier":"^2.4.1","react":"^17.0.2","react-native":"^0.66.2","rimraf":"^3.0.2","typescript":"^4.4.4"},"dependencies":{"expo-gl":"^11.0.3","react-merge-refs":"^1.1.0","react-reconciler":"^0.26.2","react-use-measure":"^2.0.4"},"peerDependencies":{"ogl":">=0.0.72","react":">=17.0","react-dom":">=17.0","react-native":">=0.63.0"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true}},"scripts":{"dev":"concurrently \"swc src -d dist -w\" \"npm run --prefix demo dev\"","prebuild":"rimraf dist","build":"swc src -d dist","postbuild":"tsc && node patch-targets","test":"jest","lint":"prettier . --check && eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}"},"types":"./index.d.ts","module":"./index.js","licenseText":"MIT License\n\nCopyright (c) 2021 Poimandres\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@codyjasonbennett/react-ogl@0.0.0-alpha-1","dist":{"shasum":"9ec7220fb9267b2896d6970e6940728a82f157c1","integrity":"sha512-pi/QLICbSpc2sRSKhN28zgON19QpsMjHN7a6gOguyuEIlBbc4180oViKkKHkF0SgqHkbWIxX/FH64yqXSERLsg==","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.0.0-alpha-1.tgz","fileCount":34,"unpackedSize":65258,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDq8n84bxJkhgHcsLHPOdg/sb2YlxewzWd4SqvSaEjWUgIgS0w16/4SHF4q+jq+dR1EMzSAWKkQTUBLkhoy3ZweeXQ="}]},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.0.0-alpha-1_1636749175036_0.9477972747040366"},"_hasShrinkwrap":false},"0.0.0-alpha-2":{"name":"@codyjasonbennett/react-ogl","version":"0.0.0-alpha-2","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.51","@swc/core":"^1.2.108","@swc/helpers":"^0.2.14","@swc/jest":"^0.2.5","@types/jest":"^27.0.2","@types/react":"^17.0.34","@types/react-dom":"^17.0.11","@types/react-native":"^0.66.3","@types/react-reconciler":"^0.26.4","@types/scheduler":"^0.16.2","@typescript-eslint/eslint-plugin":"^5.3.1","@typescript-eslint/parser":"^5.3.1","chokidar":"^3.5.2","concurrently":"^6.3.0","eslint":"^8.2.0","eslint-plugin-import":"^2.24.2","eslint-plugin-react":"^7.25.1","eslint-plugin-react-hooks":"^4.3.0","jest":"^27.3.1","ogl":"^0.0.76","ogl-typescript":"^0.1.40","prettier":"^2.4.1","react":"^17.0.2","react-native":"^0.66.2","rimraf":"^3.0.2","typescript":"^4.4.4"},"dependencies":{"expo-gl":"^11.0.3","react-merge-refs":"^1.1.0","react-reconciler":"^0.26.2","react-use-measure":"^2.0.4"},"peerDependencies":{"ogl":">=0.0.72","react":">=17.0","react-dom":">=17.0","react-native":">=0.63.0"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true}},"scripts":{"dev":"concurrently \"swc src -d dist -w\" \"npm run --prefix demo dev\"","prebuild":"rimraf dist","build":"swc src -d dist","postbuild":"tsc && node patch-targets","test":"jest","lint":"prettier . --check && eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}","publish":"npm build && npm publish dist"},"types":"./index.d.ts","module":"./index.js","licenseText":"MIT License\n\nCopyright (c) 2021 Poimandres\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@codyjasonbennett/react-ogl@0.0.0-alpha-2","dist":{"shasum":"61870b0a794a6267c5189322131abdc2fcaa9636","integrity":"sha512-w8x3+a1zMjfyJ0ZNQLu6dfOU1CcTUndHfy4LfbtETVVTMpSgSjrUuO4OkcIc0AaH28+8xWVd02cWnOm+1nxoHw==","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.0.0-alpha-2.tgz","fileCount":34,"unpackedSize":65316,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGLs1aP6af8/gvjqo80MWV+1jo9/a58aLbxo6CeWacLwIgLGXixrHesUc3B8qNuqLi6F5QJzJ9E5iqek0yTosZIb4="}]},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.0.0-alpha-2_1636751798761_0.30826311454793465"},"_hasShrinkwrap":false},"0.0.0-alpha-3":{"name":"@codyjasonbennett/react-ogl","version":"0.0.0-alpha-3","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"git+https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.51","@swc/core":"^1.2.108","@swc/helpers":"^0.2.14","@swc/jest":"^0.2.5","@types/jest":"^27.0.2","@types/react":"^17.0.34","@types/react-dom":"^17.0.11","@types/react-native":"^0.66.3","@types/react-reconciler":"^0.26.4","@types/scheduler":"^0.16.2","@typescript-eslint/eslint-plugin":"^5.3.1","@typescript-eslint/parser":"^5.3.1","chokidar":"^3.5.2","concurrently":"^6.3.0","eslint":"^8.2.0","eslint-plugin-import":"^2.24.2","eslint-plugin-react":"^7.25.1","eslint-plugin-react-hooks":"^4.3.0","jest":"^27.3.1","ogl":"^0.0.76","ogl-typescript":"^0.1.40","prettier":"^2.4.1","react":"^17.0.2","react-native":"^0.66.2","rimraf":"^3.0.2","typescript":"^4.4.4"},"dependencies":{"expo-gl":"^11.0.3","react-merge-refs":"^1.1.0","react-reconciler":"^0.26.2","react-use-measure":"^2.0.4"},"peerDependencies":{"ogl":">=0.0.72","react":">=17.0","react-dom":">=17.0","react-native":">=0.63.0"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true}},"scripts":{"dev":"concurrently \"swc src -d dist -w\" \"npm run --prefix demo dev\"","prebuild":"rimraf dist","build":"swc src -d dist","postbuild":"tsc && node patch-targets","test":"jest","lint":"prettier . --check && eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}"},"types":"./index.d.ts","module":"./index.js","_id":"@codyjasonbennett/react-ogl@0.0.0-alpha-3","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ZIH3EH50W+P52APLC58DOw4ZpR37b36OOcP9PUs0BGr6d5+CCuE+8GVJhky9sGKgRCal11Wm44ru/7A0kJKfIw==","shasum":"d4a5c66931a497cc018babb099786f709f8ec884","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.0.0-alpha-3.tgz","fileCount":31,"unpackedSize":65268,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWTk0QyJIvbtiUbPeKe9z8m4pWXpGAw6SzuldWLR8WAgIhAIgL8jVS7IU0+CQtIU80QE3v8ZawxhqTiDyDEJJdXwKM"}]},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.0.0-alpha-3_1636751876098_0.7429505796870803"},"_hasShrinkwrap":false},"0.0.0-alpha-4":{"name":"@codyjasonbennett/react-ogl","version":"0.0.0-alpha-4","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.51","@swc/core":"^1.2.108","@swc/helpers":"^0.2.14","@swc/jest":"^0.2.5","@types/jest":"^27.0.2","@types/react":"^17.0.34","@types/react-dom":"^17.0.11","@types/react-native":"^0.66.3","@types/react-reconciler":"^0.26.4","@types/scheduler":"^0.16.2","@typescript-eslint/eslint-plugin":"^5.3.1","@typescript-eslint/parser":"^5.3.1","chokidar":"^3.5.2","concurrently":"^6.3.0","eslint":"^8.2.0","eslint-plugin-import":"^2.24.2","eslint-plugin-react":"^7.25.1","eslint-plugin-react-hooks":"^4.3.0","jest":"^27.3.1","ogl":"^0.0.76","ogl-typescript":"^0.1.40","prettier":"^2.4.1","react":"^17.0.2","react-native":"^0.66.2","rimraf":"^3.0.2","typescript":"^4.4.4"},"dependencies":{"expo-gl":"^11.0.3","react-merge-refs":"^1.1.0","react-reconciler":"^0.26.2","react-use-measure":"^2.0.4"},"peerDependencies":{"ogl":">=0.0.72","react":">=17.0","react-dom":">=17.0","react-native":">=0.63.0"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true}},"scripts":{"dev":"concurrently \"swc src -d dist -w\" \"npm run --prefix demo dev\"","prebuild":"rimraf dist","build":"swc src -d dist","postbuild":"tsc && node patch-targets","test":"jest","lint":"prettier . --check && eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}"},"types":"./index.d.ts","module":"./index.js","licenseText":"MIT License\n\nCopyright (c) 2021 Poimandres\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@codyjasonbennett/react-ogl@0.0.0-alpha-4","dist":{"shasum":"3cb29acece174366c3e6d2904d004c7ee7b29a0a","integrity":"sha512-ZhqbZ9aWa4VmgDdRBHRD9nfrjD8qIJRTYSiwbkZhiFh4spb/JXvHbGO43XT5Ovt7YeCiL4hK40Sl3gsR3QI0Ag==","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.0.0-alpha-4.tgz","fileCount":34,"unpackedSize":65663,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDh679hUuusluFuVLqjDEBg+qFLV7DSPJHqWRQmPdsE/AiEAt1S9klllTdiGi4cHkXONQqtGrryUFdfQMldflMfMpQw="}]},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.0.0-alpha-4_1636772165649_0.41566162021370334"},"_hasShrinkwrap":false},"0.0.0-alpha-5":{"name":"@codyjasonbennett/react-ogl","version":"0.0.0-alpha-5","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.51","@swc/core":"^1.2.108","@swc/helpers":"^0.2.14","@swc/jest":"^0.2.5","@testing-library/react":"^12.1.2","@testing-library/react-native":"^8.0.0","@types/jest":"^27.0.2","@types/react":"^17.0.34","@types/react-dom":"^17.0.11","@types/react-native":"^0.66.3","@types/react-reconciler":"^0.26.4","@types/scheduler":"^0.16.2","@typescript-eslint/eslint-plugin":"^5.3.1","@typescript-eslint/parser":"^5.3.1","chokidar":"^3.5.2","concurrently":"^6.3.0","eslint":"^8.2.0","eslint-plugin-import":"^2.24.2","eslint-plugin-react":"^7.25.1","eslint-plugin-react-hooks":"^4.3.0","jest":"^27.3.1","ogl":"^0.0.76","ogl-typescript":"^0.1.40","prettier":"^2.4.1","react":"^17.0.2","react-dom":"^17.0.2","react-native":"^0.66.2","react-test-renderer":"^17.0.2","rimraf":"^3.0.2","typescript":"^4.4.4"},"dependencies":{"expo-gl":"^11.0.3","react-merge-refs":"^1.1.0","react-reconciler":"^0.26.2","react-use-measure":"^2.0.4"},"peerDependencies":{"ogl":">=0.0.72","react":">=17.0","react-dom":">=17.0","react-native":">=0.63.0"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true}},"scripts":{"dev":"concurrently \"swc src -d dist -w\" \"npm run --prefix demo dev\"","prebuild":"rimraf dist","build":"swc src -d dist","postbuild":"tsc && node patch-targets","test":"jest","lint":"prettier . --check && eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}"},"types":"./index.d.ts","module":"./index.js","licenseText":"MIT License\n\nCopyright (c) 2021 Poimandres\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@codyjasonbennett/react-ogl@0.0.0-alpha-5","dist":{"shasum":"db96ff08e1d7176415e9f30e699003711b4220a9","integrity":"sha512-HKsdecGWj9rUyKMSayq15E487zN6SyJSLarV/HyjfXzuM+eSIf+fYElvY3zvhUC5vVaovCggEVByXHg4bIKGrg==","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.0.0-alpha-5.tgz","fileCount":34,"unpackedSize":66699,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFpIIG0odYPjg4Sdy2CJqjlKwPIeg8L1qkrTNvsr1pPyAiATVbZKif2/hYsmFYWOYaHKi1THxgTRx4jJO64tuMslEQ=="}]},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.0.0-alpha-5_1636869553062_0.5658714314543343"},"_hasShrinkwrap":false},"0.0.0-alpha-6":{"name":"@codyjasonbennett/react-ogl","version":"0.0.0-alpha-6","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.51","@swc/core":"^1.2.108","@testing-library/react":"^12.1.2","@testing-library/react-native":"^8.0.0","@types/jest":"^27.0.2","@types/react":"^17.0.34","@types/react-dom":"^17.0.11","@types/react-native":"^0.66.3","@types/react-reconciler":"^0.26.4","@types/scheduler":"^0.16.2","@typescript-eslint/eslint-plugin":"^5.3.1","@typescript-eslint/parser":"^5.3.1","chokidar":"^3.5.2","concurrently":"^6.3.0","eslint":"^8.2.0","eslint-plugin-import":"^2.24.2","eslint-plugin-react":"^7.25.1","eslint-plugin-react-hooks":"^4.3.0","jest":"^27.3.1","ogl":"^0.0.76","ogl-typescript":"^0.1.40","prettier":"^2.4.1","react":"^17.0.2","react-dom":"^17.0.2","react-native":"^0.66.2","react-test-renderer":"^17.0.2","rimraf":"^3.0.2","typescript":"^4.4.4"},"dependencies":{"expo-gl":"^11.0.3","react-merge-refs":"^1.1.0","react-reconciler":"^0.26.2","react-use-measure":"^2.0.4"},"peerDependencies":{"ogl":">=0.0.72","react":">=17.0","react-dom":">=17.0","react-native":">=0.63.0"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true}},"scripts":{"dev":"concurrently \"swc src -d dist -w\" \"npm run --prefix demo dev\"","prebuild":"rimraf dist","build":"swc src -d dist","postbuild":"tsc && node patch-targets","test":"jest","lint":"prettier . --check && eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}","publish":"npm build && npm publish dist"},"types":"./index.d.ts","module":"./index.js","licenseText":"MIT License\n\nCopyright (c) 2021 Poimandres\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@codyjasonbennett/react-ogl@0.0.0-alpha-6","dist":{"shasum":"161b3ac257933f3aff310e924e37809cd545ffdf","integrity":"sha512-NzVMMSs7iRZTb2YsRBsJc500EgMmyrn+rrkDoDT2Md6+FJRW2hH1SUIo2BdIUm0FvulBunBr09P3TM//rAepKQ==","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.0.0-alpha-6.tgz","fileCount":34,"unpackedSize":66987,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMUL0hLhG/uN5iGKiLvaznX02RAQtpkEpMgbm/C6QhqAiA357XTYSM7lmb6tlUcDwyjoJXbnuXTBHEWxUDQwhe8Vg=="}]},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.0.0-alpha-6_1636891188713_0.4074502966296083"},"_hasShrinkwrap":false},"0.0.0-alpha-7":{"name":"@codyjasonbennett/react-ogl","version":"0.0.0-alpha-7","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.51","@swc/core":"^1.2.108","@testing-library/react":"^12.1.2","@testing-library/react-native":"^8.0.0","@types/jest":"^27.0.2","@types/react":"^17.0.34","@types/react-dom":"^17.0.11","@types/react-native":"^0.66.3","@types/react-reconciler":"^0.26.4","@types/scheduler":"^0.16.2","@typescript-eslint/eslint-plugin":"^5.3.1","@typescript-eslint/parser":"^5.3.1","chokidar":"^3.5.2","concurrently":"^6.3.0","eslint":"^8.2.0","eslint-plugin-import":"^2.24.2","eslint-plugin-react":"^7.25.1","eslint-plugin-react-hooks":"^4.3.0","jest":"^27.3.1","ogl":"^0.0.76","ogl-typescript":"^0.1.40","prettier":"^2.4.1","react":"^17.0.2","react-dom":"^17.0.2","react-native":"^0.66.2","react-test-renderer":"^17.0.2","rimraf":"^3.0.2","typescript":"^4.4.4"},"dependencies":{"expo-gl":"^11.0.3","react-merge-refs":"^1.1.0","react-reconciler":"^0.26.2","react-use-measure":"^2.0.4"},"peerDependencies":{"ogl":">=0.0.72","react":">=17.0","react-dom":">=17.0","react-native":">=0.63.0"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true}},"scripts":{"dev":"concurrently \"swc src -d dist -w\" \"npm run --prefix demo dev\"","prebuild":"rimraf dist","build":"swc src -d dist","postbuild":"tsc && node patch-targets","test":"jest","lint":"prettier . --check && eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}"},"types":"./index.d.ts","module":"./index.js","licenseText":"MIT License\n\nCopyright (c) 2021 Poimandres\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@codyjasonbennett/react-ogl@0.0.0-alpha-7","dist":{"shasum":"61e5945d710e0f7e39f7c1f6b741aa85e2301be7","integrity":"sha512-tVyNoaR4xIYX0O52BUg46V+zSCv+a50GAZ2ZRJouyufHGBSaLwHleFtj0k+8BoIUbP6fZS00HQzsXIcEw804aQ==","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.0.0-alpha-7.tgz","fileCount":34,"unpackedSize":66939,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH1iMitVzk2WCjOkR/YjoUQ1VFOd2S7edzLg3/BXLC2jAiEA5nyJs/N7o7CV67ml3uqNdMKn7m4iYr9e/8X0A7+5JCE="}]},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.0.0-alpha-7_1636891227049_0.22691237408076947"},"_hasShrinkwrap":false},"0.0.0-alpha-8":{"name":"@codyjasonbennett/react-ogl","version":"0.0.0-alpha-8","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.51","@swc/core":"^1.2.108","@testing-library/react":"^12.1.2","@testing-library/react-native":"^8.0.0","@types/jest":"^27.0.2","@types/react":"^17.0.34","@types/react-dom":"^17.0.11","@types/react-native":"^0.66.3","@types/react-reconciler":"^0.26.4","@types/scheduler":"^0.16.2","@typescript-eslint/eslint-plugin":"^5.3.1","@typescript-eslint/parser":"^5.3.1","chokidar":"^3.5.2","concurrently":"^6.3.0","eslint":"^8.2.0","eslint-plugin-import":"^2.24.2","eslint-plugin-react":"^7.25.1","eslint-plugin-react-hooks":"^4.3.0","jest":"^27.3.1","ogl":"^0.0.76","ogl-typescript":"^0.1.40","prettier":"^2.4.1","react":"^17.0.2","react-dom":"^17.0.2","react-native":"^0.66.2","react-test-renderer":"^17.0.2","rimraf":"^3.0.2","typescript":"^4.4.4"},"dependencies":{"expo-gl":"^11.0.3","react-merge-refs":"^1.1.0","react-reconciler":"^0.26.2","react-use-measure":"^2.0.4"},"peerDependencies":{"ogl":">=0.0.72","react":">=17.0","react-dom":">=17.0","react-native":">=0.63.0"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true}},"scripts":{"dev":"concurrently \"swc src -d dist -w\" \"npm run --prefix demo dev\"","prebuild":"rimraf dist","build":"swc src -d dist","postbuild":"tsc && node patch-targets","test":"jest","lint":"prettier . --check && eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}","publish":"npm build && npm publish dist"},"types":"./index.d.ts","module":"./index.js","licenseText":"MIT License\n\nCopyright (c) 2021 Poimandres\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@codyjasonbennett/react-ogl@0.0.0-alpha-8","dist":{"shasum":"eb876c2e87f1b247ab18801be4ac38966f32ccd9","integrity":"sha512-HoAi07n/aIB1Al+5Wq6VQYXz9tRzW82gqR+zrsF1IsH/Zg5UF/TEQjMD0ZHZRjXt7xqx6TtQVfzj91diUXgbOw==","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.0.0-alpha-8.tgz","fileCount":34,"unpackedSize":67032,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCH3hDJ3Kacx7JoUa38rS/amgwBbn6QL0/y4U5bnnFU7ACIAFj5Y6k9WzvldwlEEf+gApOq45EcYWU2H940hgeYNmR"}]},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.0.0-alpha-8_1636900003682_0.3589961849637604"},"_hasShrinkwrap":false},"0.0.0-alpha-9":{"name":"@codyjasonbennett/react-ogl","version":"0.0.0-alpha-9","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.51","@swc/core":"^1.2.108","@testing-library/react":"^12.1.2","@testing-library/react-native":"^8.0.0","@types/jest":"^27.0.2","@types/react":"^17.0.34","@types/react-dom":"^17.0.11","@types/react-native":"^0.66.3","@types/react-reconciler":"^0.26.4","@types/scheduler":"^0.16.2","@typescript-eslint/eslint-plugin":"^5.3.1","@typescript-eslint/parser":"^5.3.1","chokidar":"^3.5.2","concurrently":"^6.3.0","eslint":"^8.2.0","eslint-plugin-import":"^2.24.2","eslint-plugin-react":"^7.25.1","eslint-plugin-react-hooks":"^4.3.0","jest":"^27.3.1","ogl":"^0.0.76","ogl-typescript":"^0.1.40","prettier":"^2.4.1","react":"^17.0.2","react-dom":"^17.0.2","react-native":"^0.66.2","react-test-renderer":"^17.0.2","rimraf":"^3.0.2","typescript":"^4.4.4"},"dependencies":{"expo-gl":"^11.0.3","react-merge-refs":"^1.1.0","react-reconciler":"^0.26.2","react-use-measure":"^2.0.4"},"peerDependencies":{"ogl":">=0.0.72","react":">=17.0","react-dom":">=17.0","react-native":">=0.63.0"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true}},"scripts":{"dev":"concurrently \"swc src -d dist -w\" \"npm run --prefix demo dev\"","prebuild":"rimraf dist","build":"swc src -d dist","postbuild":"tsc && node patch-targets","test":"jest","lint":"prettier . --check && eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}"},"types":"./index.d.ts","module":"./index.js","licenseText":"MIT License\n\nCopyright (c) 2021 Poimandres\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@codyjasonbennett/react-ogl@0.0.0-alpha-9","dist":{"shasum":"10fba3c6c3c70c7756350e25144ddb60062b747f","integrity":"sha512-2s1iggTkBZG6Oos1V5i+PvkDZWD4pSsgnjn8H54ytu034h1ADSypDWFkr1E/Dyi+UGIyilgvRQFKlmlkCXyIxg==","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.0.0-alpha-9.tgz","fileCount":34,"unpackedSize":66984,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2DC2CRA9TVsSAnZWagAAmUkP/11wzFm6gTuHEEDYDmue\nHNcdk+uObIeGoUkJ/snG+4NnJ2h/gS4+ph68zHDdpMpfdr4haMU41iEIBe6Y\nUk0vAOto3p9GyD7PHew87vzR3sR/Uob0pM/kreckwOfr4znOi2BB3JP/+K2M\n2mKl40WCBnNp0ci9FYo+d2xThq5MIZA0ruVhp4uRG190WC9SZz1JhX+IQHU8\nfxyWxTrfnZLv2HRqKHromC/jTprROug2HfBP+peRUUsh4JP/6lpvBeWIkgLW\nhnCH2RBojppXu5Mt8piXWgB7n+mjRWQkajMzZrW+YkUhQ8Zi+59yki0SJ3YA\nBwv/h6Yw7RZ9LMd0SkNXjZ7Rdlg/HV79MwE14lBqHLiXVPktnkGRnQhcpTGo\nO6W348VldH47XH0EEFH1iaEPAIm9l1GeOFlavAwj9fShTVhmfBfirmk3aQQ2\nsy077FUhgs4p7LpLEaueV/0bH6ObKeFkUKbxuQvIJnwfXRBuvdB+wKruroWv\npMZkteoLxXQTLZHYZBLOjj1YwiamLS1U5v+6gkxLZhbrsHIMWcscpJxckLw6\n8Vz+YHwPbRPb2qXDFE5iH7YcD7B2Vyt1YK1FlNDrUmAChabi8op5Aeod6cgV\nfxneBmruzFfuBoZI3roleZ2adrjcjckw0R5Dz5EJH4EoapBrvIYwQOsptJRH\nscc8\r\n=SVwW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2SgFW2hNSGekEph/xUjxGd1kA6XaCQqUnEhtnV7FxhAIhAPQ7/yInWdIDaTEqe8jHzBN2uuCJIzQXgPpbSWtm/ZuC"}]},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.0.0-alpha-9_1636900040340_0.8506742252029875"},"_hasShrinkwrap":false},"0.4.3-bundlephobia.0":{"name":"@codyjasonbennett/react-ogl","version":"0.4.3-bundlephobia.0","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","types":"./dist/index.d.ts","main":"./dist/index.js","module":"./dist/index.mjs","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.55","@swc/core":"^1.2.135","@testing-library/react":"^12.1.2","@testing-library/react-native":"^9.0.0","@types/jest":"^27.4.0","@types/react":"^17.0.38","@types/react-dom":"^17.0.11","@types/react-native":"^0.66.15","@typescript-eslint/eslint-plugin":"^5.10.1","@typescript-eslint/parser":"^5.10.1","@vitejs/plugin-react":"^1.3.2","eslint":"^8.8.0","eslint-plugin-import":"^2.25.4","eslint-plugin-react":"^7.28.0","eslint-plugin-react-hooks":"^4.3.0","expo-gl":"^11.1.1","jest":"^27.4.7","ogl":"^0.0.93","prettier":"^2.5.1","react":"^17.0.2","react-dom":"^17.0.2","react-native":"^0.67.1","react-test-renderer":"^17.0.2","rimraf":"^3.0.2","rollup-include-all":"^1.1.0","typescript":"^4.5.5","vite":"^2.9.9"},"dependencies":{"@expo/browser-polyfill":"^1.0.0","@types/react-reconciler":"^0.26.4","@types/ogl":"npm:ogl-types@^0.0.93","@types/webxr":"^0.4.0","react-reconciler":"^0.26.2","react-use-measure":"^2.1.1","suspend-react":"^0.0.8","zustand":"3.7.1"},"peerDependencies":{"expo-gl":">=11.0","ogl":">=0.0.72","react":">=17.0","react-dom":">=17.0","react-native":">=0.64"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true},"expo-gl":{"optional":true}},"scripts":{"dev":"vite","build":"vite build && tsc","test":"jest","lint":"eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}"},"licenseText":"MIT License\n\nCopyright (c) 2021-2022 Poimandres\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@codyjasonbennett/react-ogl@0.4.3-bundlephobia.0","dist":{"shasum":"1bb4f4ff7ed8bdbf7d3cc1d42e72a8154b65044f","integrity":"sha512-PEb+MYiY08ZoAGWreJB1oWxkTZlAxOSTngF/T/VoBZTJ2ZQy4TwkLgrLKI0mxA7E1dGJdLtSvpXD5WG1Oi9CKQ==","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.4.3-bundlephobia.0.tgz","fileCount":36,"unpackedSize":98980,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA5pxH4K+j7LcwIGedJSLmaqno4ULcudU3e0G8tso6p3AiEA51C2n4ilzIqdWkv5cDnIsqqHqN2s8a5jzAht9yIb8Eg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqZobACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmogAg/8Dmgt6ZZedna523LtHBzbgGgA6G9Gn4KFba3+4TBVzud3wdrG\r\niZELsKt6kqaD/jbyleNa8oMjHI12VUR5vShhnkdaPf4j+aLl/tccp43zrgYu\r\nrmA/asB8idwz7Ibd1J6/GEmPBgl/tdZkEkE0U4nWlHt03SnaHm6SpIU5X8SJ\r\nzX9k8Xgk1fDkxZPuY/ySSQTRD60up1JYwT/v0UltPQNe+I6/+NRe9zuGWa/y\r\n3ERBe2g/floYYmJ+W6G31BHSehZ8G++Hhx6S3OQOEdOni5KXwNRViC9rXB0V\r\n8xhz2YLCkr5ppVKM4XeBzJFXEFbKlEDDGQtDcNV8bQfK7biFSwdC9Zsx01fA\r\nw1xrKXCSgKKik9KlEid4KTO5ux9ZvMc9AdlT/yoIQ5E0XDjpJpjdrLYiaLvQ\r\nRwnjJkq1+AgVT+MOYlorYCryLsZNZllvvhCQkgSZ+JofL3X9T5vLrBe9ppTn\r\n0l4ZsCuoX8o/WAO4344ZysAFK2soeMpZus4REoPwTbsrIVzgsqUzx2bcVZqM\r\ns2hJbmmDsaL7ef+h7s9b7iWOXmZcQ0o08So96kDJqQcSmb54VgpkOG2bDAQA\r\niD2bDK/6zdz0naOMQDEcCWa1R0efa+Jit0n930kLHY1YkisN3CbdcQcYhSQ8\r\nE25uN1kPRagtJr3HYy7cMFoaa36N+eje1aU=\r\n=mPJ4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.4.3-bundlephobia.0_1655282203647_0.06856265738244849"},"_hasShrinkwrap":false},"0.8.0-test.0":{"name":"@codyjasonbennett/react-ogl","version":"0.8.0-test.0","description":"A barebones react renderer for OGL.","bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"homepage":"https://github.com/pmndrs/react-ogl#readme","repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"keywords":["react","renderer","webgl","ogl","shaders"],"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"license":"MIT","types":"./dist/index.d.ts","exports":"./dist/index.mjs","react-native":"./dist/index.native.mjs","sideEffects":false,"devDependencies":{"@swc/cli":"^0.1.57","@swc/core":"^1.2.242","@swc/jest":"^0.2.22","@testing-library/react":"^13.3.0","@types/jest":"^28.1.8","@types/react":"^18.0.17","@types/react-dom":"^18.0.6","@types/react-native":"^0.69.5","@typescript-eslint/eslint-plugin":"^5.34.0","@typescript-eslint/parser":"^5.34.0","@vitejs/plugin-react":"^2.0.1","eslint":"^8.22.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.1","eslint-plugin-react-hooks":"^4.6.0","expo-gl":"~11.4.0","jest":"^28.1.3","jest-environment-jsdom":"^28.1.3","ogl":"^0.0.97","prettier":"^2.7.1","react":"^18.2.0","react-dom":"^18.2.0","react-native":"^0.69.4","react-test-renderer":"^18.2.0","rimraf":"^3.0.2","typescript":"^4.7.4","vite":"^3.0.9"},"dependencies":{"@types/ogl":"npm:ogl-types@^0.0.97","@types/react-reconciler":"^0.26.7","@types/webxr":"^0.5.0","react-reconciler":"^0.27.0","react-use-measure":"^2.1.1","suspend-react":"^0.0.8","zustand":"^3.7.1"},"peerDependencies":{"expo-gl":">=11.4","ogl":">=0.0.97","react":">=18.0","react-dom":">=18.0","react-native":">=0.69"},"peerDependenciesMeta":{"react-dom":{"optional":true},"react-native":{"optional":true},"expo-gl":{"optional":true}},"scripts":{"dev":"vite","build":"rimraf dist && vite build && vite build && tsc","test":"jest","lint":"eslint src/**/*.{ts,tsx}","lint-fix":"prettier . --write && eslint --fix src/**/*.{ts,tsx}"},"licenseText":"MIT License\n\nCopyright (c) 2021-2022 Poimandres\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@codyjasonbennett/react-ogl@0.8.0-test.0","dist":{"shasum":"5a2516962ccfba447ef31c2c54ce29ffeb8b6333","integrity":"sha512-opY22z6tk/k7gUGq50Q9CWDnvoGE2RlovJXNhh9lgzetlv6LT104PHA944sG4OF29wiS4rSJEZQ8Gb1namow3g==","tarball":"https://registry.npmjs.org/@codyjasonbennett/react-ogl/-/react-ogl-0.8.0-test.0.tgz","fileCount":54,"unpackedSize":153022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRMzV9kQMRsR1TceNeeEUkYRsZkz0rBLsrlbsOG0fzjwIgLb/g2jpkQCw7AIMc//KRPXFuXvTUYyQRLE0hH/RkZz8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCNi1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpp2w/+PU6/K+UipX9yTQ3WGeKrx7jynuqmQik0GUpYD9E/AEYaZTUz\r\n51Obf58BuMWJxLMXIuBt7JPsoVpFkz25nH4VnUHH/2xeT22InlGkBQiZQ74K\r\npsIsEJO9c44jRNsOtOGRFImXJCzRpo/Icmr1irlZjVMafXvOiYLDCH9ffPdd\r\nD/Ipyug/Wm29Ite7jQ2NDrxAo6WbbYF4nbi3mg9A4OnTl4dwae2CbOgZS8uj\r\n8GjT6V6nEc6xjak0XR9OkLUV4WsQNzaNHAdntWtvDjbYhZO6/WwiU+5pJo6l\r\nT4ezCAoiPJtN98hX0jAv8vZEBXlIYRGTUPfTwty5CGnbPkmO4+1F83kr2xYB\r\nGhTFfS53kiji2AUiYaMPk52cKb+eImttLQzZsyPW9bzBH8XY02AY2aY0UJik\r\nxD0Zj8Cp6OKp80ixpsYciLpImcw+YBWG5n9OJtdcM2A8UtIKtOrEdVm9ZFaZ\r\ny7t3xjaMeKrOn31+RkRl8ShMSZc89/i36w5VOKkJOZDWy26zmXWGjEUx3YxZ\r\nUTgW8Jt3bk1PT66+GvWn9TOV/XZ7UVoj5S2UCCSzI9lNk01/uSn8tyejWZsO\r\n2VF7lvJZCKHjyLiJuSS9nLq0qV02qayRNb68UyZ+kP+Fa6YMjMFFCNx6aphV\r\nkFYsCq5Tzu1CdoTV6RUuGgpDj64IPplgvf4=\r\n=cpX1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"codyjasonbennett","email":"hi@codyb.co"},"directories":{},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-ogl_0.8.0-test.0_1661524149506_0.09700938870351372"},"_hasShrinkwrap":false}},"maintainers":[{"name":"codyjasonbennett","email":"hi@codyb.co"}],"description":"A barebones react renderer for OGL.","homepage":"https://github.com/pmndrs/react-ogl#readme","keywords":["react","renderer","webgl","ogl","shaders"],"repository":{"type":"git","url":"https://github.com/pmndrs/react-ogl.git"},"author":{"name":"Cody Bennett","url":"https://github.com/codyjasonbennett"},"bugs":{"url":"https://github.com/pmndrs/react-ogl/issues"},"license":"MIT","readme":"# react-ogl\n\n[![Size](https://img.shields.io/bundlephobia/minzip/react-ogl?label=gzip&style=flat&colorA=000000&colorB=000000)](https://bundlephobia.com/package/react-ogl)\n[![Version](https://img.shields.io/npm/v/react-ogl?style=flat&colorA=000000&colorB=000000)](https://npmjs.com/package/react-ogl)\n[![Downloads](https://img.shields.io/npm/dt/react-ogl.svg?style=flat&colorA=000000&colorB=000000)](https://npmjs.com/package/react-ogl)\n[![Twitter](https://img.shields.io/twitter/follow/pmndrs?label=%40pmndrs&style=flat&colorA=000000&colorB=000000&logo=twitter&logoColor=000000)](https://twitter.com/pmndrs)\n[![Discord](https://img.shields.io/discord/740090768164651008?style=flat&colorA=000000&colorB=000000&label=discord&logo=discord&logoColor=000000)](https://discord.gg/poimandres)\n\nreact-ogl is a barebones [react renderer](https://reactjs.org/docs/codebase-overview.html#renderers) for [OGL](https://github.com/oframe/ogl) with an emphasis on minimalism and modularity. Its reconciler simply expresses JSX as OGL elements — `<mesh />` becomes `new OGL.Mesh()`. This happens dynamically; there's no wrapper involved.\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Getting Started](#getting-started)\n  - [react-dom](#react-dom)\n  - [react-native](#react-native)\n- [Canvas](#canvas)\n  - [Canvas Props](#canvas-props)\n  - [Custom Canvas](#custom-canvas)\n  - [Testing](#testing)\n  - [Root State](#root-state)\n- [Creating Elements](#creating-elements)\n  - [JSX, properties, and shortcuts](#jsx-properties-and-shortcuts)\n  - [Setting constructor arguments via `args`](#setting-constructor-arguments-via-args)\n  - [Attaching into element properties via `attach`](#attaching-into-element-properties-via-attach)\n  - [Creating custom elements via `extend`](#creating-custom-elements-via-extend)\n  - [Adding third-party objects via `<primitive />`](#adding-third-party-objects-via-primitive-)\n- [Hooks](#hooks)\n  - [Accessing state via `useOGL`](#accessing-state-via-useogl)\n  - [Frameloop subscriptions via `useFrame`](#frameloop-subscriptions-via-useframe)\n  - [Loading assets via `useLoader`](#loading-assets-via-useloader)\n  - [Object traversal via `useGraph`](#object-traversal-via-usegraph)\n  - [Transient updates via `useStore`](#transient-updates-via-usestore)\n- [Events](#events)\n  - [Custom Events](#custom-events)\n\n## Installation\n\n```bash\n# NPM\nnpm install ogl react-ogl\n\n# Yarn\nyarn add ogl react-ogl\n\n# PNPM\npnpm add ogl react-ogl\n```\n\n## Getting Started\n\nreact-ogl itself is super minimal, but you can use the familiar [@react-three/fiber](https://github.com/pmndrs/react-three-fiber) API with some helpers targeted for different platforms:\n\n### react-dom\n\nThis example uses [`create-react-app`](https://reactjs.org/docs/create-a-new-react-app.html#create-react-app) for the sake of simplicity, but you can use your own environment or [create a codesandbox](https://react.new).\n\n```bash\n# Create app\nnpx create-react-app my-app\ncd my-app\n\n# Install dependencies\nnpm install ogl react-ogl\n\n# Start\nnpm run start\n```\n\nThe following creates a re-usable component that has its own state, reacts to events and participates a shared render-loop.\n\n```jsx\nimport * as React from 'react'\nimport { useFrame, Canvas } from 'react-ogl'\nimport { createRoot } from 'react-dom/client'\n\nfunction Box(props) {\n  // This reference will give us direct access to the mesh\n  const mesh = React.useRef()\n  // Set up state for the hovered and active state\n  const [hovered, setHover] = React.useState(false)\n  const [active, setActive] = React.useState(false)\n  // Subscribe this component to the render-loop, rotate the mesh every frame\n  useFrame(() => (mesh.current.rotation.x += 0.01))\n  // Return view, these are regular OGL elements expressed in JSX\n  return (\n    <mesh\n      {...props}\n      ref={mesh}\n      scale={active ? 1.5 : 1}\n      onClick={() => setActive((value) => !value)}\n      onPointerOver={() => setHover(true)}\n      onPointerOut={() => setHover(false)}\n    >\n      <box />\n      <program\n        vertex={`\n          attribute vec3 position;\n          attribute vec3 normal;\n\n          uniform mat4 modelViewMatrix;\n          uniform mat4 projectionMatrix;\n          uniform mat3 normalMatrix;\n\n          varying vec3 vNormal;\n\n          void main() {\n            vNormal = normalize(normalMatrix * normal);\n            gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n          }\n        `}\n        fragment={`\n          precision highp float;\n\n          uniform vec3 uColor;\n          varying vec3 vNormal;\n\n          void main() {\n            vec3 normal = normalize(vNormal);\n            float lighting = dot(normal, normalize(vec3(10)));\n\n            gl_FragColor.rgb = uColor + lighting * 0.1;\n            gl_FragColor.a = 1.0;\n          }\n        `}\n        uniforms={{ uColor: hovered ? 'hotpink' : 'orange' }}\n      />\n    </mesh>\n  )\n}\n\ncreateRoot(document.getElementById('root')).render(\n  <Canvas camera={{ position: [0, 0, 8] }}>\n    <Box position={[-1.2, 0, 0]} />\n    <Box position={[1.2, 0, 0]} />\n  </Canvas>,\n)\n```\n\n### react-native\n\nThis example uses [`expo-cli`](https://docs.expo.dev/get-started/create-a-new-app) but you can create a bare app with `react-native` CLI as well.\n\n```bash\n# Create app and cd into it\nnpx expo init my-app # or npx react-native init my-app\ncd my-app\n\n# Automatically install & link expo modules\nnpx install-expo-modules@latest\nexpo install expo-gl\n\n# Install NPM dependencies\nnpm install ogl react-ogl\n\n# Start\nnpm run start\n```\n\nWe'll also need to configure `metro.config.js` to look for the mjs file extension that OGL uses.\n\n```js\nmodule.exports = {\n  resolver: {\n    resolverMainFields: ['browser', 'exports', 'main'], // https://github.com/facebook/metro/issues/670\n    sourceExts: ['json', 'js', 'jsx', 'ts', 'tsx', 'cjs', 'mjs'],\n    assetExts: ['glb', 'gltf', 'png', 'jpg'],\n  },\n}\n```\n\nInside of our app, you can use the same API as web while running on native OpenGL ES — no webview needed.\n\n```js\nimport * as React from 'react'\nimport { useFrame, Canvas } from 'react-ogl'\n\nfunction Box(props) {\n  // This reference will give us direct access to the mesh\n  const mesh = React.useRef()\n  // Set up state for the hovered and active state\n  const [hovered, setHover] = React.useState(false)\n  const [active, setActive] = React.useState(false)\n  // Subscribe this component to the render-loop, rotate the mesh every frame\n  useFrame(() => (mesh.current.rotation.x += 0.01))\n  // Return view, these are regular OGL elements expressed in JSX\n  return (\n    <mesh\n      {...props}\n      ref={mesh}\n      scale={active ? 1.5 : 1}\n      onClick={() => setActive((value) => !value)}\n      onPointerOver={() => setHover(true)}\n      onPointerOut={() => setHover(false)}\n    >\n      <box />\n      <program\n        vertex={`\n          attribute vec3 position;\n          attribute vec3 normal;\n\n          uniform mat4 modelViewMatrix;\n          uniform mat4 projectionMatrix;\n          uniform mat3 normalMatrix;\n\n          varying vec3 vNormal;\n\n          void main() {\n            vNormal = normalize(normalMatrix * normal);\n            gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n          }\n        `}\n        fragment={`\n          precision highp float;\n\n          uniform vec3 uColor;\n          varying vec3 vNormal;\n\n          void main() {\n            vec3 normal = normalize(vNormal);\n            float lighting = dot(normal, normalize(vec3(10)));\n\n            gl_FragColor.rgb = uColor + lighting * 0.1;\n            gl_FragColor.a = 1.0;\n          }\n        `}\n        uniforms={{ uColor: hovered ? 'hotpink' : 'orange' }}\n      />\n    </mesh>\n  )\n}\n\nexport default () => (\n  <Canvas camera={{ position: [0, 0, 8] }}>\n    <Box position={[-1.2, 0, 0]} />\n    <Box position={[1.2, 0, 0]} />\n  </Canvas>\n)\n```\n\n## Canvas\n\nreact-ogl provides an x-platform `<Canvas />` component for web and native that serves as the entrypoint for your OGL scenes. It is a real DOM canvas or native view that accepts OGL elements as children (see [creating elements](#creating-elements)).\n\n### Canvas Props\n\nIn addition to its platform props, `<Canvas />` accepts a set of `RenderProps` to configure react-ogl and its rendering behavior.\n\n```tsx\n<Canvas\n  // Configures the react rendering mode. Defaults to `blocking`\n  mode={\"legacy\" | \"blocking\" | \"concurrent\"}\n  // Creates, sets, or configures the default renderer.\n  // Accepts a callback, an external renderer, or renderer constructor params/properties.\n  // Defaults to `new OGL.Renderer({ alpha: true, antialias: true, powerPreference: 'high-performance' })\n  renderer={(canvas: HTMLCanvasElement) => new Renderer(canvas) | renderer | { ...params, ...props }}\n  // Sets the renderer pixel ratio from a clamped range or value. Default is `[1, 2]`\n  dpr={[min, max] | value}\n  // Sets or configures the default camera.\n  // Accepts an external camera, or camera constructor params/properties.\n  // Defaults to `new OGL.Camera(gl, { fov: 75, near: 1, far: 1000 })` with position-z `5`\n  camera={camera | { ...params, ...props }}\n  // Enables orthographic projection when using OGL's built-in camera. Default is `false`\n  orthographic={true | false}\n  // Defaults to `always`\n  frameloop={'always' | 'never'}\n  // An optional callback invoked after canvas creation and before commit.\n  onCreated={(state: RootState) => void}\n  // Optionally configures custom events. Defaults to built-in events exported as `events`\n  events={EventManager | undefined}\n>\n  {/* Accepts OGL elements as children */}\n  <transform />\n</Canvas>\n\n// e.g.\n\n<Canvas\n  renderer={{ alpha: true }}\n  camera={{ fov: 45, position: [0, 1.3, 3] }}\n  onCreated={(state) => void state.gl.clearColor(1, 1, 1, 0)}\n>\n  <transform />\n</Canvas>\n```\n\n### Custom Canvas\n\nA react 18 style `createRoot` API creates an imperative `Root` with the same options as `<Canvas />`, but you're responsible for updating it and configuring things like events (see [events](#events)). This root attaches to an `HTMLCanvasElement` and renders OGL elements into a scene. Useful for creating an entrypoint with react-ogl and for headless contexts like a server or testing (see [testing](#testing)).\n\n```jsx\nimport { createRoot, events } from 'react-ogl'\n\nconst canvas = document.querySelector('canvas')\nconst root = createRoot(canvas, { events })\nroot.render(\n  <mesh>\n    <box />\n    <normalProgram />\n  </mesh>,\n)\nroot.unmount()\n```\n\n`createRoot` can also be used to create a custom `<Canvas />`. The following constructs a custom canvas that renders its children into react-ogl.\n\n```jsx\nimport * as React from 'react'\nimport { createRoot, events } from 'react-ogl'\n\nfunction CustomCanvas({ children }) {\n  // Init root from canvas\n  const [canvas, setCanvas] = React.useState()\n  const root = React.useMemo(() => canvas && createRoot(canvas, { events }), [canvas])\n  // Render children as a render-effect\n  root?.render(children)\n  // Cleanup on unmount\n  React.useEffect(() => () => root?.unmount(), [root])\n  // Use callback-style ref to access canvas in render\n  return <canvas ref={setCanvas} />\n}\n```\n\n### Testing\n\nIn addition to `createRoot` (see [custom canvas](#custom-canvas)), react-ogl exports an internal `reconciler` which can be used to safely flush async effects in tests via `reconciler#act`. The following emulates a legacy root and asserts against `RootState` (see [root state](#root-state)).\n\n```tsx\nimport * as React from 'react'\nimport * as OGL from 'ogl'\nimport { type RootState, createRoot, act } from 'react-ogl'\n\nit('tests against a react-ogl component or scene', async () => {\n  const transform = React.createRef<OGL.Transform>()\n  let state: RootState = null!\n\n  await act(async () => {\n    const root = createRoot(document.createElement('canvas'))\n    state = root.render(<transform ref={transform} />).getState()\n  })\n\n  expect(transform.current).toBeInstanceOf(OGL.Transform)\n  expect(state.scene.children.length).toBe(1)\n  expect(state.scene.children[0]).toBe(transform.current)\n})\n```\n\n### Root State\n\nEach `<Canvas />` or `Root` encapsulates its own OGL state via [React context](https://reactjs.org/docs/context.html) and a [Zustand](https://github.com/pmndrs/zustand) store, as defined by `RootState`. This can be accessed and modified with the `onCreated` canvas prop, and with hooks like `useOGL` (see [hooks](#hooks)).\n\n```tsx\ninterface RootState {\n  // Zustand setter and getter for live state manipulation.\n  // See https://github.com/pmndrs/zustand\n  get(): RootState\n  set(fn: (previous: RootState) => (next: Partial<RootState>)): void\n  // Canvas layout information\n  size: { width: number; height: number }\n  // OGL scene internals\n  renderer: OGL.Renderer\n  gl: OGL.OGLRenderingContext\n  scene: OGL.Transform\n  camera: OGL.Camera\n  // OGL perspective and frameloop preferences\n  orthographic: boolean\n  frameloop: 'always' | 'never'\n  // Internal XR manager to enable WebXR features\n  xr: XRManager\n  // Frameloop internals for custom render loops\n  priority: number\n  subscribed: React.MutableRefObject<Subscription>[]\n  subscribe: (refCallback: React.MutableRefObject<Subscription>, renderPriority?: number) => void\n  unsubscribe: (refCallback: React.MutableRefObject<Subscription>, renderPriority?: number) => void\n  // Optional canvas event manager and its state\n  events?: EventManager\n  mouse: OGL.Vec2\n  raycaster: OGL.Raycast\n  hovered: Map<number, Interactive>\n}\n```\n\n## Creating elements\n\nreact-ogl renders React components into an OGL scene-graph, and can be used on top of other renderers like [react-dom](https://npmjs.com/react-dom) and [react-native](https://npmjs.com/react-native) that render for web and native, respectively. react-ogl components are defined by primitives or lower-case elements native to the OGL namespace (for custom elements, see [extend](#creating-custom-elements-via-extend)).\n\n```jsx\nfunction Component(props) {\n  return (\n    <mesh {...props}>\n      <box />\n      <normalProgram />\n    </mesh>\n  )\n}\n\n;<transform>\n  <Component position={[1, 2, 3]} />\n</transform>\n```\n\nThese elements are not exported or implemented internally, but merely expressed as JSX — `<mesh />` becomes `new OGL.Mesh()`. This happens dynamically; there's no wrapper involved.\n\n### JSX, properties, and shortcuts\n\nreact-ogl elements can be modified with JSX attributes or props. These are native to their underlying OGL objects.\n\n```jsx\n<transform\n  // Set non-atomic properties with literals\n  // transform.visible = false\n  visible={false}\n  // Copy atomic properties with a stable reference (e.g. useMemo)\n  // transform.rotation.copy(rotation)\n  rotation={rotation}\n  // Set atomic properties with declarative array syntax\n  // transform.position.set(1, 2, 3)\n  position={[1, 2, 3]}\n  // Set scalars with shorthand for vector properties\n  // transform.scale.set(1, 1, 1)\n  scale={1}\n  // Set CSS names or hex values as shorthand for color properties\n  // transform.color.set('red')\n  color=\"red\"\n  // Set sub properties with prop piercing or dash-case\n  // transform.rotation.x = Math.PI / 2\n  rotation-x={Math.PI / 2}\n/>\n```\n\n### Setting constructor arguments via `args`\n\nAn array of constructor arguments (`args`) can be passed to instantiate elements' underlying OGL objects. Changing `args` will reconstruct the object and update any associated refs.\n\n```jsx\n// new OGL.Text({ font, text: 'Text' })\n<text args={[{ font, text: 'Text' }]} />\n```\n\nBuilt-in elements that require a `gl` context such as `<mesh />`, `<geometry />`, or `<program />` are marked as effectful (see [extend](#creating-custom-elements-via-extend)) and do not require an `OGLRenderingContext` to be passed via `args`. They can be constructed mutably and manipulated via props:\n\n```jsx\n<mesh>\n  <box />\n  <normalProgram />\n</mesh>\n```\n\n`<geometry />` and `<program />` also accept attributes and shader sources as props, which are passed to their respective constructors. This does not affect other properties like `drawRange` or `uniforms`.\n\n```jsx\n<mesh>\n  <geometry\n    position={{ size: 3, data: new Float32Array([-0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, 0.5, 0, 0.5, -0.5, 0]) }}\n    uv={{ size: 2, data: new Float32Array([0, 1, 1, 1, 0, 0, 1, 0]) }}\n    index={{ data: new Uint16Array([0, 1, 2, 1, 3, 2]) }}\n  />\n  {/* prettier-ignore */}\n  <program\n    vertex={/* glsl */ `...`}\n    fragment={/* glsl */ `...`}\n    uniforms={{ uniform: value }}\n  />\n</mesh>\n```\n\n### Attaching into element properties via `attach`\n\nSome elements do not follow the traditional scene-graph and need to be added by other means. For this, the `attach` prop can describe where an element is added via a property or a callback to add & remove the element.\n\n```jsx\n// Attaches into parent.property, parent.sub.property, and parent.array[0]\n<parent>\n  <element attach=\"property\" />\n  <element attach=\"sub-property\" />\n  <element attach=\"array-0\" />\n</parent>\n\n// Attaches via parent#setProperty and parent#removeProperty\n<parent>\n  <element\n    attach={(parent, self) => {\n      parent.setProperty(self)\n      return () => parent.removeProperty(self)\n    }}\n    // lambda version\n    attach={(parent, self) => (parent.setProperty(self), () => parent.removeProperty(self))}\n  />\n</parent>\n```\n\nElements who extend `OGL.Geometry` or `OGL.Program` will automatically attach via `attach=\"geometry\"` and `attach=\"program\"`, respectively.\n\n```jsx\n<mesh>\n  <box />\n  <normalProgram />\n</mesh>\n```\n\n### Creating custom elements via `extend`\n\nreact-ogl tracks an internal catalog of constructable elements, defaulting to the OGL namespace. This catalog can be expanded via `extend` to declaratively use custom elements as native elements.\n\n```jsx\nimport { extend } from 'react-ogl'\n\nclass CustomElement {}\nextend({ CustomElement })\n\n<customElement />\n```\n\nTypeScript users will need to extend the `OGLElements` interface to describe custom elements and their properties.\n\n```tsx\nimport { Node, extend } from 'react-ogl'\n\nclass CustomElement {}\n\ndeclare module 'react-ogl' {\n  interface OGLElements {\n    customElement: Node<CustomElement, typeof CustomElement>\n  }\n}\n\nextend({ CustomElement })\n```\n\nEffectful elements that require a `gl` context can mark themselves as effectful and receive a `OGLRenderingContext` when constructed, making args mutable and enabling the use of props. This is done for OGL built-in elements like `<mesh />`, `<geometry />`, and `<program />`.\n\n```jsx\nimport { extend } from 'react-ogl'\n\nclass CustomElement {\n  constructor(gl) {\n    this.gl = gl\n  }\n}\nextend({ CustomElement }, true)\n\n<customElement />\n```\n\n### Adding third-party objects via `<primitive />`\n\nObjects created outside of React (e.g. globally or from a loader) can be added to the scene-graph with the `<primitive />` element via its `object` prop. Primitives can be interacted with like any other element, but will modify `object` and cannot make use of `args`.\n\n```jsx\nimport * as OGL from 'ogl'\n\nconst object = new OGL.Transform()\n\n<primitive object={object} position={[1, 2, 3]} />\n```\n\n## Hooks\n\nreact-ogl ships with hooks that allow you to tie or request information to your components. These are called within the body of `<Canvas />` and contain imperative and possibly stateful code.\n\n### Accessing state via `useOGL`\n\nReturns the current canvas' `RootState`, describing react-ogl state and OGL rendering internals (see [root state](#root-state)).\n\n```tsx\nconst { renderer, gl, scene, camera, ... } = useOGL()\n```\n\nTo subscribe to a specific key, `useOGL` accepts a [Zustand](https://github.com/pmndrs/zustand) selector:\n\n```tsx\nconst renderer = useOGL((state) => state.renderer)\n```\n\n### Frameloop subscriptions via `useFrame`\n\nSubscribes an element into a shared render loop outside of React. `useFrame` subscriptions are provided a live `RootState`, the current RaF time in seconds, and a `XRFrame` when in a WebXR session. Note: `useFrame` subscriptions should never update React state but prefer external mechanisms like refs.\n\n```tsx\nconst object = React.useRef<OGL.Transform>(null!)\n\nuseFrame((state: RootState, time: number, frame?: XRFrame) => {\n  object.current.rotation.x = time / 2000\n  object.current.rotation.y = time / 1000\n})\n\nreturn <transform ref={object} />\n```\n\n### Loading assets via `useLoader`\n\nSynchronously loads and caches assets with a loader via suspense. Note: the caller component must be wrapped in `React.Suspense`.\n\n```jsx\nconst texture = useLoader(OGL.TextureLoader, '/path/to/image.jpg')\n```\n\nMultiple assets can be requested in parallel by passing an array:\n\n```jsx\nconst [texture1, texture2] = useLoader(OGL.TextureLoader, ['/path/to/image1.jpg', '/path/to/image2.jpg'])\n```\n\nCustom loaders can be implemented via the `LoaderRepresentation` signature:\n\n```tsx\nclass CustomLoader {\n  async load(gl: OGLRenderingContext, url: string): Promise<void> {}\n}\n\nconst result = useLoader(CustomLoader, '/path/to/resource')\n```\n\n### Object traversal via `useGraph`\n\nTraverses an `OGL.Transform` for unique meshes and programs, returning an `ObjectMap`.\n\n```tsx\nconst { nodes, programs } = useGraph(object)\n\n<mesh geometry={nodes['Foo'].geometry} program={programs['Bar']} />\n```\n\n### Transient updates via `useStore`\n\nReturns the internal [Zustand](https://github.com/pmndrs/zustand) store. Useful for transient updates outside of React (e.g. multiplayer/networking).\n\n```tsx\nconst store = useStore()\nReact.useLayoutEffect(() => store.subscribe(state => ...), [store])\n```\n\n## Events\n\nreact-ogl implements mesh pointer-events with `OGL.Raycast` that can be tapped into via the following props:\n\n```tsx\n<mesh\n  // Fired when the mesh is clicked or tapped.\n  onClick={(event: OGLEvent<MouseEvent>) => ...}\n  // Fired when a pointer becomes inactive over the mesh.\n  onPointerUp={(event: OGLEvent<PointerEvent>) => ...}\n  // Fired when a pointer becomes active over the mesh.\n  onPointerDown={(event: OGLEvent<PointerEvent>) => ...}\n  // Fired when a pointer moves over the mesh.\n  onPointerMove={(event: OGLEvent<PointerEvent>) => ...}\n  // Fired when a pointer enters the mesh's bounds.\n  onPointerOver={(event: OGLEvent<PointerEvent>) => ...}\n  // Fired when a pointer leaves the mesh's bounds.\n  onPointerOut={(event: OGLEvent<PointerEvent>) => ...}\n/>\n```\n\nEvents contain the original event as `nativeEvent` and properties from `OGL.RaycastHit`.\n\n```tsx\n{\n  nativeEvent: PointerEvent | MouseEvent,\n  localPoint: Vec3,\n  distance: number,\n  point: Vec3,\n  faceNormal: Vec3,\n  localFaceNormal: Vec3,\n  uv: Vec2,\n  localNormal: Vec3,\n  normal: Vec3,\n}\n```\n\n### Custom events\n\nCustom events can be implemented per the `EventManager` interface and passed via the `events` Canvas prop.\n\n```tsx\nconst events: EventManager = {\n  connected: false,\n  connect(canvas: HTMLCanvasElement, state: RootState) {\n    // Bind handlers\n  },\n  disconnect(canvas: HTMLCanvasElement, state: RootState) {\n    // Cleanup\n  },\n}\n\n<Canvas events={events}>\n  <mesh onPointerMove={(event: OGLEvent<PointerEvent>) => console.log(event)}>\n    <box />\n    <normalProgram />\n  </mesh>\n</Canvas>\n```\n\n<details>\n  <summary>Full example</summary>\n\n```tsx\nconst events = {\n  connected: false,\n  connect(canvas: HTMLCanvasElement, state: RootState) {\n    state.events.handlers = {\n      pointermove(event: PointerEvent) {\n        // Convert mouse coordinates\n        state.mouse.x = (event.offsetX / state.size.width) * 2 - 1\n        state.mouse.y = -(event.offsetY / state.size.height) * 2 + 1\n\n        // Filter to interactive meshes\n        const interactive: Interactive[] = []\n        state.scene.traverse((node: OGL.Transform | Interactive) => {\n          // Mesh has registered events and a defined volume\n          if (node instanceof OGL.Mesh && node.__handlers && node.geometry?.attributes?.position) interactive.push(node)\n        })\n\n        // Get elements that intersect with our pointer\n        state.raycaster.castMouse(state.camera, state.mouse)\n        const intersects: Interactive[] = state.raycaster.intersectMeshes(interactive)\n\n        // Call mesh handlers\n        for (const object of intersects) {\n          const handlers = object.__handlers\n          handlers?.onPointerMove?.({ ...object.hit, nativeEvent: event })\n        }\n      },\n    }\n\n    // Bind\n    state.events.connected = true\n    for (const [name, handler] of Object.entries(state.events.handlers)) {\n      canvas.addEventListener(name, handler)\n    }\n  },\n  disconnect(canvas: HTMLCanvasElement, state: RootState) {\n    // Unbind\n    state.events.connected = false\n    for (const [name, handler] of Object.entries(state.events.handlers)) {\n      canvas.removeEventListener(name, handler)\n    }\n  },\n}\n\n<Canvas events={events}>\n  <mesh onPointerMove={(event: OGLEvent<PointerEvent>) => console.log(event)}>\n    <box />\n    <normalProgram />\n  </mesh>\n</Canvas>\n```\n\n</details>\n","readmeFilename":"README.md"}