Skip to content

Commit 2aa574e

Browse files
authored
Merge pull request #41 from RobRendell/master
Support reverse portals in iframes and other windows.
2 parents e269286 + 475880d commit 2aa574e

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

Diff for: src/index.tsx

+6-2
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,15 @@ type AnyPortalNode<C extends Component<any> = Component<any>> = HtmlPortalNode<C
4444

4545

4646
const validateElementType = (domElement: Element, elementType: ANY_ELEMENT_TYPE) => {
47+
const ownerDocument = (domElement.ownerDocument ?? document) as any;
48+
// Cast document to `any` because Typescript doesn't know about the legacy `Document.parentWindow` field, and also
49+
// doesn't believe `Window.HTMLElement`/`Window.SVGElement` can be used in instanceof tests.
50+
const ownerWindow = ownerDocument.defaultView ?? ownerDocument.parentWindow ?? window; // `parentWindow` for IE8 and earlier
4751
if (elementType === ELEMENT_TYPE_HTML) {
48-
return domElement instanceof HTMLElement;
52+
return domElement instanceof ownerWindow.HTMLElement;
4953
}
5054
if (elementType === ELEMENT_TYPE_SVG) {
51-
return domElement instanceof SVGElement;
55+
return domElement instanceof ownerWindow.SVGElement;
5256
}
5357
throw new Error(`Unrecognized element type "${elementType}" for validateElementType.`);
5458
};

0 commit comments

Comments
 (0)