UNPKG

tandem-front-end

Version:

Visual editor for web components

79 lines 3.04 kB
"use strict"; var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]]; return t; }; Object.defineProperty(exports, "__esModule", { value: true }); var React = require("react"); var ReactDOM = require("react-dom"); var tandem_common_1 = require("tandem-common"); var recompose_1 = require("recompose"); exports.default = recompose_1.compose(recompose_1.pure, recompose_1.withState("anchorRect", "setAnchorRect", null), recompose_1.lifecycle({ componentWillUpdate: function (_a) { var open = _a.open; if (!this.props.open && open) { var anchor = ReactDOM.findDOMNode(this); var rect = getRealElementBounds(anchor); this.props.setAnchorRect(rect); } } }), function (Base) { return function (_a) { var open = _a.open, onEmptySpaceClick = _a.onEmptySpaceClick, anchorRect = _a.anchorRect, rest = __rest(_a, ["open", "onEmptySpaceClick", "anchorRect"]); var overrideProps = {}; if (!open) { overrideProps = { contentProps: { children: [] } }; } else if (anchorRect) { overrideProps = { contentProps: { onEmptySpaceClick: onEmptySpaceClick, anchorRect: anchorRect, style: { display: "block", position: "fixed" } } }; } return React.createElement(Base, __assign({}, rest, overrideProps)); }; }); var getRealElementBounds = function (element) { var parentIframes = []; var current = element; var _loop_1 = function () { var ownerDocument = current.ownerDocument; if (ownerDocument === document) { return "break"; } var iframe = Array.prototype.find.call(ownerDocument.defaultView.parent.document.querySelectorAll("iframe"), function (iframe) { return iframe.contentDocument === ownerDocument; }); current = iframe; parentIframes.push(iframe); }; while (1) { var state_1 = _loop_1(); if (state_1 === "break") break; } var offset = parentIframes.reduce(function (point, iframe) { return tandem_common_1.shiftPoint(point, iframe.getBoundingClientRect()); }, { left: 0, top: 0 }); return tandem_common_1.shiftBounds(element.getBoundingClientRect(), offset); }; //# sourceMappingURL=controller.js.map