UNPKG

@atlaskit/editor-plugin-block-controls

Version:

Block controls plugin for @atlaskit/editor-core

63 lines (61 loc) 3.06 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.unmountDecorations = exports.getNodeTypeWithLevel = exports.getNodeAnchor = exports.TYPE_NODE_DEC = exports.TYPE_HANDLE_DEC = exports.TYPE_DROP_TARGET_DEC = exports.NESTED_DEPTH = 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 _reactDom = _interopRequireDefault(require("react-dom")); var _uuid = _interopRequireDefault(require("uuid")); var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals"); var _validation = require("./utils/validation"); // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead var TYPE_DROP_TARGET_DEC = exports.TYPE_DROP_TARGET_DEC = 'drop-target-decoration'; var TYPE_HANDLE_DEC = exports.TYPE_HANDLE_DEC = 'drag-handle'; var TYPE_NODE_DEC = exports.TYPE_NODE_DEC = 'node-decoration'; var NESTED_DEPTH = exports.NESTED_DEPTH = 100; var getNodeAnchor = exports.getNodeAnchor = function getNodeAnchor(node) { var handleId = ObjHash.getForNode(node); return "--node-anchor-".concat(node.type.name, "-").concat(handleId); }; var getSubType = function getSubType(node) { if (node.attrs.level) { return "-".concat(node.attrs.level); } if ((0, _validation.isFontSizeMarkActive)(node)) { return '-small'; } return ''; }; var getNodeTypeWithLevel = exports.getNodeTypeWithLevel = function getNodeTypeWithLevel(node) { var subType = (0, _expValEquals.expValEquals)('platform_editor_small_font_size', 'isEnabled', true) ? getSubType(node) : node.attrs.level ? "-".concat(node.attrs.level) : ''; return node.type.name + subType; }; var ObjHash = /*#__PURE__*/function () { function ObjHash() { (0, _classCallCheck2.default)(this, ObjHash); } return (0, _createClass2.default)(ObjHash, null, [{ key: "getForNode", value: function getForNode(node) { if (this.caching.has(node)) { return this.caching.get(node); } // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead var uniqueId = (0, _uuid.default)(); this.caching.set(node, uniqueId); return uniqueId; } }]); }(); (0, _defineProperty2.default)(ObjHash, "caching", new WeakMap()); var unmountDecorations = exports.unmountDecorations = function unmountDecorations(nodeViewPortalProviderAPI, selector, key) { // Removing decorations manually instead of using native destroy function in prosemirror API // as it was more responsive and causes less re-rendering var decorationsToRemove = document.querySelectorAll("[".concat(selector, "=\"true\"]")); decorationsToRemove.forEach(function (el) { _reactDom.default.unmountComponentAtNode(el); }); };