Check-canvas-instance-in-another-window
Description of change
Currently, when creating root and checking if target is HTMLCanvasElement we check it with target instanceof HTMLCanvasElement
It will break in quite rare-use case, when rendering content into another window (created with const newWindow = window.open() using React portal.
In this case - created canvas is instance of newWindow.HTMLCanvasElement, not global HTMLCanvasElement (or technically window.HTMLCanvasElement). As a result - the app will crash.
Use case for such a scenario is eg. creating multi-window Electron applications, when child windows are created using window.open(). I described this architecture in detail here: https://pietrasiak.com/creating-multi-window-electron-apps-using-react-portals
Fixes:
I added getIsCanvasElement function that is checking for this case and modified createRoot function to use it when checking if target is canvas.
Pre-Merge Checklist
- [x] Tests and/or benchmarks are included
- [x] Documentation is changed or added
- [x] Lint process passed (
npm run lint) - [x] Tests passed (
npm run test)
Great find! I think there's some weirdness on the branch, tho. Can you grab the latest beta branch, cherry-pick your commit onto there, and update this PR? Once you do it should be a pretty quick merge.
@pie6k bumping this, as I'd love to get it merged soon. 😁
Closing this PR due to inactivity.