@atlaskit/editor-plugin-block-menu
Version:
BlockMenu plugin for @atlaskit/editor-core
41 lines (40 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getSuggestedItemsFromSelection = void 0;
var _selection = require("@atlaskit/editor-common/selection");
var _utils = require("../../editor-commands/transform-node-utils/utils");
var _suggestedItemsRank = require("../utils/suggested-items-rank");
/**
* Pure function to calculate suggested items based on selection and menu components.
*/
var getSuggestedItemsFromSelection = exports.getSuggestedItemsFromSelection = function getSuggestedItemsFromSelection(menuItemsMap, currentSelection) {
if (menuItemsMap.size === 0 || !currentSelection) {
return [];
}
var _expandSelectionToBlo = (0, _selection.expandSelectionToBlockRange)(currentSelection),
range = _expandSelectionToBlo.range;
if (!range) {
return [];
}
var blockNodes = (0, _utils.getBlockNodesInRange)(range);
if (blockNodes.length === 0) {
return [];
}
var firstNodeType = blockNodes[0].type.name;
var allSameType = blockNodes.every(function (node) {
return node.type.name === firstNodeType;
});
if (!allSameType) {
return [];
}
var nodeTypeName = firstNodeType;
var sortedKeys = (0, _suggestedItemsRank.getSortedSuggestedItems)(nodeTypeName);
return sortedKeys.map(function (key) {
return menuItemsMap.get(key);
}).filter(function (item) {
var _item$isHidden;
return item !== undefined && !((_item$isHidden = item.isHidden) !== null && _item$isHidden !== void 0 && _item$isHidden.call(item));
});
};