@atlaskit/editor-plugin-block-controls
Version:
Block controls plugin for @atlaskit/editor-core
63 lines (61 loc) • 3.06 kB
JavaScript
;
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);
});
};