UNPKG

@atlaskit/editor-plugin-block-controls

Version:

Block controls plugin for @atlaskit/editor-core

127 lines (126 loc) 5.29 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.isAnchorSupported = exports.AnchorRectCache = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _memoizeOne = _interopRequireDefault(require("memoize-one")); var _domAttrName = require("../../ui/utils/dom-attr-name"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var isAnchorSupported = exports.isAnchorSupported = (0, _memoizeOne.default)(function () { // directly use CSS would cause failed SSR tests. if (window.CSS && window.CSS.supports) { return window.CSS.supports('anchor-name: --a'); } return false; }); var AnchorRectCache = exports.AnchorRectCache = /*#__PURE__*/function () { function AnchorRectCache() { (0, _classCallCheck2.default)(this, AnchorRectCache); (0, _defineProperty2.default)(this, "anchorRectMap", {}); (0, _defineProperty2.default)(this, "isAnchorSupported", isAnchorSupported()); (0, _defineProperty2.default)(this, "isDirty", true); (0, _defineProperty2.default)(this, "view", null); } return (0, _createClass2.default)(AnchorRectCache, [{ key: "clear", value: function clear() { this.isDirty = true; this.anchorRectMap = {}; } }, { key: "getRects", value: function getRects() { if (this.isDirty) { var _this$view; var anchorElements = ((_this$view = this.view) === null || _this$view === void 0 ? void 0 : _this$view.dom.querySelectorAll("[".concat((0, _domAttrName.getAnchorAttrName)(), "]"))) || []; this.anchorRectMap = Array.from(anchorElements).reduce(function (prev, curr) { var anchorName = curr.getAttribute((0, _domAttrName.getAnchorAttrName)()); if (anchorName) { return _objectSpread(_objectSpread({}, prev), {}, (0, _defineProperty2.default)({}, anchorName, { height: curr.clientHeight, top: curr.offsetTop, left: curr.offsetLeft, right: curr.offsetLeft + curr.clientWidth, width: curr.clientWidth, bottom: curr.offsetTop + curr.clientHeight })); } return prev; }, {}); this.isDirty = false; } return this.anchorRectMap; } }, { key: "setEditorView", value: function setEditorView(view) { if (this.view !== view) { this.view = view; } } }, { key: "getHeight", value: function getHeight(anchorName) { var _rects$anchorName; if (this.isAnchorSupported) { return null; } var rects = this.getRects(); return (_rects$anchorName = rects[anchorName]) === null || _rects$anchorName === void 0 ? void 0 : _rects$anchorName.height; } }, { key: "getWidth", value: function getWidth(anchorName) { var _rects$anchorName2; if (this.isAnchorSupported) { return null; } var rects = this.getRects(); return (_rects$anchorName2 = rects[anchorName]) === null || _rects$anchorName2 === void 0 ? void 0 : _rects$anchorName2.width; } }, { key: "getLeft", value: function getLeft(anchorName) { var _rects$anchorName3; if (this.isAnchorSupported) { return null; } var rects = this.getRects(); return (_rects$anchorName3 = rects[anchorName]) === null || _rects$anchorName3 === void 0 ? void 0 : _rects$anchorName3.left; } }, { key: "getTop", value: function getTop(anchorName) { var _rects$anchorName4; if (this.isAnchorSupported) { return null; } var rects = this.getRects(); return (_rects$anchorName4 = rects[anchorName]) === null || _rects$anchorName4 === void 0 ? void 0 : _rects$anchorName4.top; } }, { key: "getRight", value: function getRight(anchorName) { var _rects$anchorName5; if (this.isAnchorSupported) { return null; } var rects = this.getRects(); return (_rects$anchorName5 = rects[anchorName]) === null || _rects$anchorName5 === void 0 ? void 0 : _rects$anchorName5.right; } }, { key: "getRect", value: function getRect(anchorName) { if (this.isAnchorSupported) { return null; } var rects = this.getRects(); return rects[anchorName]; } }]); }();