UNPKG

@atlaskit/editor-plugin-block-menu

Version:

BlockMenu plugin for @atlaskit/editor-core

33 lines (32 loc) 1.22 kB
import { expandSelectionToBlockRange } from '@atlaskit/editor-common/selection'; import { getBlockNodesInRange } from '../../editor-commands/transform-node-utils/utils'; import { getSortedSuggestedItems } from '../utils/suggested-items-rank'; /** * Pure function to calculate suggested items based on selection and menu components. */ export const getSuggestedItemsFromSelection = (menuItemsMap, currentSelection) => { if (menuItemsMap.size === 0 || !currentSelection) { return []; } const { range } = expandSelectionToBlockRange(currentSelection); if (!range) { return []; } const blockNodes = getBlockNodesInRange(range); if (blockNodes.length === 0) { return []; } const firstNodeType = blockNodes[0].type.name; const allSameType = blockNodes.every(node => node.type.name === firstNodeType); if (!allSameType) { return []; } const nodeTypeName = firstNodeType; const sortedKeys = getSortedSuggestedItems(nodeTypeName); return sortedKeys.map(key => menuItemsMap.get(key)).filter(item => { var _item$isHidden; return item !== undefined && !((_item$isHidden = item.isHidden) !== null && _item$isHidden !== void 0 && _item$isHidden.call(item)); }); };