UNPKG

@atlaskit/editor-plugin-block-menu

Version:

BlockMenu plugin for @atlaskit/editor-core

25 lines 1.59 kB
import { useMemo } from 'react'; import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks'; import { createMenuItemsMap } from '../utils/createMenuItemsMap'; import { getSuggestedItemsFromSelection } from '../utils/getSuggestedItemsFromSelection'; export var useSuggestedItems = function useSuggestedItems(api) { var _api$blockMenu; var _useSharedPluginState = useSharedPluginStateWithSelector(api, ['blockControls', 'selection'], function (states) { var _states$blockControls, _states$selectionStat; return { preservedSelection: (_states$blockControls = states.blockControlsState) === null || _states$blockControls === void 0 ? void 0 : _states$blockControls.preservedSelection, selection: (_states$selectionStat = states.selectionState) === null || _states$selectionStat === void 0 ? void 0 : _states$selectionStat.selection }; }), preservedSelection = _useSharedPluginState.preservedSelection, selection = _useSharedPluginState.selection; var blockMenuComponents = api === null || api === void 0 || (_api$blockMenu = api.blockMenu) === null || _api$blockMenu === void 0 ? void 0 : _api$blockMenu.actions.getBlockMenuComponents(); var menuItemsMap = useMemo(function () { return createMenuItemsMap(blockMenuComponents); }, [blockMenuComponents]); var suggestedItems = useMemo(function () { var currentSelection = preservedSelection || selection; return getSuggestedItemsFromSelection(menuItemsMap, currentSelection); }, [menuItemsMap, preservedSelection, selection]); return suggestedItems; };