@atlaskit/editor-plugin-block-menu
Version:
BlockMenu plugin for @atlaskit/editor-core
31 lines (30 loc) • 1.8 kB
JavaScript
;
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;
};