UNPKG

@atlaskit/editor-plugin-block-menu

Version:

BlockMenu plugin for @atlaskit/editor-core

31 lines (30 loc) 1.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSuggestedItems = void 0; var _react = require("react"); var _hooks = require("@atlaskit/editor-common/hooks"); var _createMenuItemsMap = require("../utils/createMenuItemsMap"); var _getSuggestedItemsFromSelection = require("../utils/getSuggestedItemsFromSelection"); var useSuggestedItems = exports.useSuggestedItems = function useSuggestedItems(api) { var _api$blockMenu; var _useSharedPluginState = (0, _hooks.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 = (0, _react.useMemo)(function () { return (0, _createMenuItemsMap.createMenuItemsMap)(blockMenuComponents); }, [blockMenuComponents]); var suggestedItems = (0, _react.useMemo)(function () { var currentSelection = preservedSelection || selection; return (0, _getSuggestedItemsFromSelection.getSuggestedItemsFromSelection)(menuItemsMap, currentSelection); }, [menuItemsMap, preservedSelection, selection]); return suggestedItems; };