UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

101 lines (82 loc) 2.28 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getDocument = getDocument; exports.getDocuments = getDocuments; exports.findIFrame = findIFrame; exports.getMousePosition = getMousePosition; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); function getDocument(self) { try { var parent = self.parent, top = self.top; if (parent !== top) { return getDocument(parent); } return parent.document; } catch (e) { return self.document; } } function getDocuments(self) { var list = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; try { var parent = self.parent, top = self.top; if (parent !== top) { return getDocuments(parent, list); } return list.concat(parent.document); } catch (e) { return list.concat(self.document); } } function findIFrame(self) { return (0, _toConsumableArray2["default"])(self.parent.document.querySelectorAll('iframe')).find(function (frame) { return frame.contentWindow === self; }); } function getPageMousePosition(x, y, self) { var _self$document$docume = self.document.documentElement, scrollTop = _self$document$docume.scrollTop, scrollLeft = _self$document$docume.scrollLeft; return { x: x + scrollLeft, y: y + scrollTop }; } function getMousePosition(x, y, self, client) { try { if (self.top === self) { return client ? { x: x, y: y } : getPageMousePosition(x, y, self); } var parent = self.parent; var iframe = findIFrame(self); var _ref = iframe ? iframe.getBoundingClientRect() : { top: 0, left: 0 }, top = _ref.top, left = _ref.left; var newX = x + left; var newY = y + top; if (parent === self.top) { return client ? { x: newX, y: newY } : getPageMousePosition(newX, newY, parent); } return getMousePosition(newX, newY, parent); } catch (e) { return client ? { x: x, y: y } : getPageMousePosition(x, y, self); } } //# sourceMappingURL=DocumentUtils.js.map