UNPKG

@atlaskit/editor-plugin-selection-extension

Version:

editor-plugin-selection-extension plugin for @atlaskit/editor-core

65 lines (64 loc) 2.71 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.MenuItem = void 0; var _react = _interopRequireDefault(require("react")); var _toolbar = require("@atlaskit/editor-common/toolbar"); var _editorToolbar = require("@atlaskit/editor-toolbar"); var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge")); var _compiled = require("@atlaskit/primitives/compiled"); var _main = require("../../pm-plugins/main"); var _utils = require("../../pm-plugins/utils"); var _types = require("../../types"); var MenuItem = exports.MenuItem = function MenuItem(_ref) { var extensionMenuItems = _ref.extensionMenuItems, api = _ref.api; var _useEditorToolbar = (0, _toolbar.useEditorToolbar)(), editorView = _useEditorToolbar.editorView; if (!(extensionMenuItems !== null && extensionMenuItems !== void 0 && extensionMenuItems.length) || !editorView || !api) { return null; } var onClickHandle = function onClickHandle(extension) { return function () { if (extension.contentComponent) { var selection = (0, _utils.getSelectionTextInfo)(editorView, api); api.core.actions.execute(api.selectionExtension.commands.setActiveExtension({ extension: extension, selection: selection })); } api.core.actions.execute(function (_ref2) { var tr = _ref2.tr; var _getSelectionAdfInfoN = (0, _utils.getSelectionAdfInfoNew)(tr.selection), selectedNode = _getSelectionAdfInfoN.selectedNode, nodePos = _getSelectionAdfInfoN.nodePos; tr.setMeta(_main.selectionExtensionPluginKey, { type: _types.SelectionExtensionActionTypes.SET_SELECTED_NODE, selectedNode: selectedNode, nodePos: nodePos }); return tr; }); extension.onClick && extension.onClick(); }; }; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, extensionMenuItems.map(function (extension) { var Icon = extension.icon; return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownItem, { key: extension.label, elemBefore: /*#__PURE__*/_react.default.createElement(Icon, { size: "small", label: "" }), onClick: onClickHandle(extension), isDisabled: extension.isDisabled }, extension.label, extension.lozenge && /*#__PURE__*/_react.default.createElement(_compiled.Box, { as: "span", paddingInline: "space.100" }, /*#__PURE__*/_react.default.createElement(_lozenge.default, { appearance: 'new' }, extension.lozenge.label))); })); };