Skip to content

Commit

Permalink
fix(c3DEngine): fix error when input renderer.domElement is a canvas
Browse files Browse the repository at this point in the history
  • Loading branch information
mgermerie authored and gchoqueux committed Aug 4, 2021
1 parent 6e79ff3 commit 14567c1
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
15 changes: 13 additions & 2 deletions src/Renderer/c3DEngine.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,19 @@ class c3DEngine {
options.isWebGL2 = true;
}

const renderer = rendererOrDiv.domElement ? rendererOrDiv : undefined;
const viewerDiv = renderer ? renderer.domElement : rendererOrDiv;
// If rendererOrDiv parameter is a domElement, we use it as support to display data.
// If it is a renderer, we check the renderer.domElement parameter which can be :
// - a domElement, in this case we use this domElement as a support
// - a canvas, in this case we use the canvas parent (which should be a domElement) as a support
let renderer;
let viewerDiv;
if (rendererOrDiv.domElement) {
renderer = rendererOrDiv;
viewerDiv = renderer.domElement instanceof HTMLDivElement ?
renderer.domElement : renderer.domElement.parentElement;
} else {
viewerDiv = rendererOrDiv;
}

this.width = viewerDiv.clientWidth;
this.height = viewerDiv.clientHeight;
Expand Down
3 changes: 3 additions & 0 deletions test/unit/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ class DOMElement {
}
}

// Mock HTMLDivElement for Mocha
global.HTMLDivElement = DOMElement;

// Mock document object for Mocha.
global.document = {
createElement: (type) => {
Expand Down

0 comments on commit 14567c1

Please sign in to comment.