| "use strict"; |
| |
| var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); |
| |
| exports.__esModule = true; |
| exports.default = offset; |
| |
| var _contains = _interopRequireDefault(require("./contains")); |
| |
| var _ownerDocument = _interopRequireDefault(require("./ownerDocument")); |
| |
| var _scrollLeft = _interopRequireDefault(require("./scrollLeft")); |
| |
| var _scrollTop = _interopRequireDefault(require("./scrollTop")); |
| |
| /** |
| * Returns the offset of a given element, including top and left positions, width and height. |
| * |
| * @param node the element |
| */ |
| function offset(node) { |
| var doc = (0, _ownerDocument.default)(node); |
| var box = { |
| top: 0, |
| left: 0, |
| height: 0, |
| width: 0 |
| }; |
| var docElem = doc && doc.documentElement; // Make sure it's not a disconnected DOM node |
| |
| if (!docElem || !(0, _contains.default)(docElem, node)) return box; |
| if (node.getBoundingClientRect !== undefined) box = node.getBoundingClientRect(); |
| box = { |
| top: box.top + (0, _scrollTop.default)(docElem) - (docElem.clientTop || 0), |
| left: box.left + (0, _scrollLeft.default)(docElem) - (docElem.clientLeft || 0), |
| width: box.width, |
| height: box.height |
| }; |
| return box; |
| } |
| |
| module.exports = exports["default"]; |