1+ import React from 'react' ;
2+
3+ /**
4+ * Get elements owner document
5+ *
6+ * @param {ReactComponent|HTMLElement } componentOrElement
7+ * @returns {HTMLElement }
8+ */
9+ function ownerDocument ( componentOrElement ) {
10+ let elem = React . findDOMNode ( componentOrElement ) ;
11+ return ( elem && elem . ownerDocument ) || document ;
12+ }
13+
114/**
215 * Shortcut to compute element style
316 *
417 * @param {HTMLElement } elem
518 * @returns {CssStyle }
619 */
720function getComputedStyles ( elem ) {
8- return elem . ownerDocument . defaultView . getComputedStyle ( elem , null ) ;
21+ return ownerDocument ( elem ) . defaultView . getComputedStyle ( elem , null ) ;
922}
1023
1124/**
@@ -21,7 +34,7 @@ function getOffset(DOMNode) {
2134 return window . jQuery ( DOMNode ) . offset ( ) ;
2235 }
2336
24- let docElem = DOMNode . ownerDocument . documentElement ;
37+ let docElem = ownerDocument ( DOMNode ) . documentElement ;
2538 let box = { top : 0 , left : 0 } ;
2639
2740 // If we don't have gBCR, just use 0,0 rather than error
@@ -89,7 +102,7 @@ function getPosition(elem, offsetParent) {
89102 * @returns {HTMLElement }
90103 */
91104function offsetParentFunc ( elem ) {
92- let docElem = elem . ownerDocument . documentElement ;
105+ let docElem = ownerDocument ( elem ) . documentElement ;
93106 let offsetParent = elem . offsetParent || docElem ;
94107
95108 while ( offsetParent && ( offsetParent . nodeName !== 'HTML' &&
@@ -101,6 +114,7 @@ function offsetParentFunc(elem) {
101114}
102115
103116export default {
117+ ownerDocument : ownerDocument ,
104118 getComputedStyles : getComputedStyles ,
105119 getOffset : getOffset ,
106120 getPosition : getPosition ,
0 commit comments