`](https://github.com/pmndrs/drei/blob/514be0d1ff88b43c07cf246da9dca3517ea14d9a/src/core/Instances.tsx#L22)\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/cientos/blob/main/CODE_OF_CONDUCT.md)\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/cientos/blob/main/CONTRIBUTING.md).\n- [X] Read the [docs](https://cientos.tresjs.org/guide).\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/cientos/issues) that reports the same bug to avoid creating a duplicate.",[2914,2917],{"name":2915,"color":2916},"feature","c2e0c6",{"name":2918,"color":2919},"p2-nice-to-have","D4C5F9",342,"Equivalent of Three.js's `InstancedMesh`","2024-04-02T09:44:50Z","https://github.com/Tresjs/cientos/issues/342",0.73493165,{"description":2926,"labels":2927,"number":2929,"owner":2868,"repository":2888,"state":2870,"title":2930,"updated_at":2931,"url":2932,"score":2933},"### Description\r\n\r\nGood controls for presentation purposes\r\n\r\n### Suggested solution\r\n\r\nhttps://drei.docs.pmnd.rs/controls/presentation-controls#presentationcontrols\r\n\r\n### Alternative\r\n\r\n_No response_\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Validations\r\n\r\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/cientos/blob/main/CODE_OF_CONDUCT.md)\r\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/cientos/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://cientos.tresjs.org/guide).\r\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/cientos/issues) that reports the same bug to avoid creating a duplicate.",[2928],{"name":2900,"color":2901},108,"Presentation Controls","2024-11-26T07:08:48Z","https://github.com/Tresjs/cientos/issues/108",0.7552237,{"description":2935,"labels":2936,"number":2867,"owner":2868,"repository":2906,"state":2938,"title":2939,"updated_at":2940,"url":2941,"score":2874},"**Is your feature request related to a problem? Please describe.**\r\nWould be pretty nice if just by using `useControls` the vue component gets teleported on added to the VDom three instead of having to import it\r\n\r\nSame for CSS https://www.npmjs.com/package/vite-plugin-css-injected-by-js\r\n\r\n",[2937],{"name":2897,"color":2898},"closed","Avoid having to import component and styles","2023-12-13T10:00:34Z","https://github.com/Tresjs/leches/issues/73",{"description":2943,"labels":2944,"number":2946,"owner":2868,"repository":2947,"state":2938,"title":2948,"updated_at":2949,"url":2950,"score":2951},"### Description\r\n\r\nAs a developer using TresJS ...\r\n\r\n## Problem\r\n\r\nI forget to `lint --fix` before pushing. Others do too. This leads to messier commit histories, noisier diffs, and wasted time.\r\n\r\n## Suggested solution\r\n\r\nAdd a client-side pre-push [git hook](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) to `lint --fix` the project and abort the push if errors exist. \r\n\r\nBy default, the hook would run `lint --fix` during a push, before any objects have been transferred.\r\n\r\nIf there are no linter errors after running `lint --fix`, it would:\r\n\r\n* continue the push\r\n\r\nIf there are unfixable-by-the-linter errors, it would:\r\n\r\n* abort the push\r\n* report the errors (or filenames with errors) and instruct the user to fix them \r\n* give the user instructions for bypassing the linter step and pushing despite errors\r\n\r\n## Advantages\r\n\r\n* Reduce the number of PRs that fail the CI lint step\r\n* Reduce the amount of diff \"noise\" due to `chore(lint): fix linter errors`\r\n* Reduce mental load when pushing – no need to remember to lint\r\n\r\n## Disadvantages\r\n\r\n* Some new contributors might be turned away. E.g. maybe the linter fails and they can't figure out the next step.\r\n* If linter errors make it into `main`, everyone's `git push` based on the branch will initially fail.\r\n* `pnpm lint --fix` takes a while to run.\r\n\r\n### Alternative\r\n\r\nDo nothing. Keep the project as-is.\r\n\r\n### Additional context\r\n\r\nThe project runs a linter as a CI step and fails unlinted PRs already.\r\n\r\n\r\n### Validations\r\n\r\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\r\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://tresjs.org/guide).\r\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.",[2945],{"name":2918,"color":2919},590,"tres","Git pre-push hook to `lint --fix` the project","2024-04-07T23:51:17Z","https://github.com/Tresjs/tres/issues/590",0.70127153,{"description":2953,"labels":2954,"number":2956,"owner":2868,"repository":2947,"state":2938,"title":2957,"updated_at":2958,"url":2959,"score":2960},"### Describe the bug\n\nWhenever we unmount the TresCanvas on route change, for example, we are recursively disposing and deleting scene references. This seems to interfere with Helper's own disposal cycle.\n\n```\nchunk-TMRGR37B.js?v=d91265db:20290 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'dispose')\n at DirectionalLightHelper.dispose (chunk-TMRGR37B.js?v=d91265db:20290:30)\n at disposeObject3D (index.ts:302:14)\n at index.ts:294:29\n at Array.forEach (\u003Canonymous>)\n at disposeObject3D (index.ts:294:12)\n at dispose (TresCanvas.vue:162:3)\n at unmountCanvas (TresCanvas.vue:183:3)\n```\n\n### Reproduction\n\nInternal\n\n### Steps to reproduce\n\n1. Add a helper to the scene\n2. Change route.\n\n### System Info\n\n```shell\nSystem:\n OS: macOS 15.2\n CPU: (8) arm64 Apple M1 Pro\n Memory: 192.69 MB / 16.00 GB\n Shell: 5.9 - /bin/zsh\n Binaries:\n Node: 20.11.0 - /usr/local/bin/node\n Yarn: 1.22.19 - /usr/local/bin/yarn\n npm: 10.2.4 - /usr/local/bin/npm\n pnpm: 9.15.4 - ~/Library/pnpm/pnpm\n bun: 1.0.2 - ~/.bun/bin/bun\n Browsers:\n Brave Browser: 120.1.61.116\n Chrome: 132.0.6834.160\n Safari: 18.2\n npmPackages:\n @tresjs/cientos: 4.0.3 => 4.0.3 \n @tresjs/core: workspace:^ => 4.3.2 \n @tresjs/leches: https://pkg.pr.new/@tresjs/leches@9ad0cd3 => 0.14.1\n```\n\n### Used Package Manager\n\npnpm\n\n### Code of Conduct\n\n- [x] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\n- [x] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\n- [x] Read the [docs](https://tresjs.org/guide).\n- [x] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.\n- [x] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.",[2955],{"name":2885,"color":2886},912,"Helpers disposal issue","2025-02-06T13:52:50Z","https://github.com/Tresjs/tres/issues/912",0.7189787,{"description":2962,"labels":2963,"number":2905,"owner":2868,"repository":2888,"state":2938,"title":2964,"updated_at":2965,"url":2966,"score":2910},"Same as https://github.com/Tresjs/tres/pull/269 in cientos",[],"ESM first fix types exports for moduleResolutions bundler on vite","2023-05-20T15:16:20Z","https://github.com/Tresjs/cientos/issues/75",{"description":2968,"labels":2969,"number":2974,"owner":2868,"repository":2888,"state":2938,"title":2975,"updated_at":2976,"url":2977,"score":2978},"### Describe the bug\n\nWhen you receive a key event, you receive two values, the event.code (KeyA) and the event.key (A).\r\nThe key is equal to the pressed letter, but letters change based on keyboard layout. \r\n\r\nWhile event.code don't.\r\n\r\nPlease swap the use of key to code, and use the proper values (A => KeyA).\r\n\r\nHere is an example.\r\n\r\n\r\nIn my picture, WASD is as unusable as you can imagine, but if you use KeyW, KeyA, KeyS, and KeyD, then it will map to my ZQSD no problem.\r\n\r\n\n\n### Reproduction\n\nhttps://cientos.tresjs.org/guide/controls/keyboard-controls.html\n\n### Steps to reproduce\n\nAccess the webpage with a keyboard of different layout\n\n### System Info\n\n```shell\nazerty layout keyboard\n```\n\n\n### Used Package Manager\n\nnpm\n\n### Code of Conduct\n\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/cientos/blob/main/CODE_OF_CONDUCT.md)\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/cientos/blob/main/CONTRIBUTING.md).\n- [X] Read the [docs](https://cientos.tresjs.org/guide).\n- [X] Check that there isn't [already an issue](https://github.com/Tresjs/cientos/issues) that reports the same bug to avoid creating a duplicate.\n- [X] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.",[2970,2971],{"name":2879,"color":2880},{"name":2972,"color":2973},"p3-minor-bug","F28C37",573,"Keyboard controls is improperly mapped","2025-01-02T08:46:55Z","https://github.com/Tresjs/cientos/issues/573",0.73853886,["Reactive",2980],{},["Set"],["ShallowReactive",2983],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fTRUt-CQnfF0ZrgDb26XZZa_DWOwqwVtiSQY7REXjMfk":-1},"/Tresjs/tres/559"]