UNPKG

@atlaskit/editor-plugin-block-menu

Version:

BlockMenu plugin for @atlaskit/editor-core

126 lines (123 loc) 6.45 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.blockMenuPlugin = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _react = _interopRequireDefault(require("react")); var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure"); var _editorActions = require("./editor-actions"); var _isTransformToTargetDisabled = require("./editor-actions/isTransformToTargetDisabled"); var _transformNode2 = require("./editor-commands/transformNode"); var _blockMenuExperiences = require("./pm-plugins/experiences/block-menu-experiences"); var _keymap = require("./pm-plugins/keymap"); var _main = require("./pm-plugins/main"); var _blockMenu = _interopRequireDefault(require("./ui/block-menu")); var _blockMenuComponents = require("./ui/block-menu-components"); var _blockMenuProvider = require("./ui/block-menu-provider"); var _flag = require("./ui/flag"); var blockMenuPlugin = exports.blockMenuPlugin = function blockMenuPlugin(_ref) { var api = _ref.api, config = _ref.config; var registry = (0, _editorActions.createBlockMenuRegistry)(); registry.register((0, _blockMenuComponents.getBlockMenuComponents)({ api: api, config: config })); var refs = {}; return { name: 'blockMenu', pmPlugins: function pmPlugins() { return [{ name: 'blockMenuPlugin', plugin: function plugin() { return (0, _main.createPlugin)(api); } }, { name: 'blockMenuKeymap', plugin: function plugin() { return (0, _keymap.keymapPlugin)(api, config); } }].concat((0, _toConsumableArray2.default)((0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_experience_tracking_observer', 'isEnabled', true) ? [{ name: 'blockMenuExperiences', plugin: function plugin() { return (0, _blockMenuExperiences.getBlockMenuExperiencesPlugin)({ refs: refs, dispatchAnalyticsEvent: function dispatchAnalyticsEvent(payload) { var _api$analytics; return api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 ? void 0 : _api$analytics.fireAnalyticsEvent(payload); } }); } }] : [])); }, actions: { registerBlockMenuComponents: function registerBlockMenuComponents(blockMenuComponents) { registry.register(blockMenuComponents); }, getBlockMenuComponents: function getBlockMenuComponents() { return registry.components; }, isTransformOptionDisabled: function isTransformOptionDisabled(optionNodeTypeName, optionNodeTypeAttrs) { var _api$blockControls, _api$selection; var preservedSelection = api === null || api === void 0 || (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 || (_api$blockControls = _api$blockControls.sharedState.currentState()) === null || _api$blockControls === void 0 ? void 0 : _api$blockControls.preservedSelection; var selection = api === null || api === void 0 || (_api$selection = api.selection) === null || _api$selection === void 0 || (_api$selection = _api$selection.sharedState) === null || _api$selection === void 0 || (_api$selection = _api$selection.currentState()) === null || _api$selection === void 0 ? void 0 : _api$selection.selection; var currentSelection = preservedSelection || selection; if (!currentSelection) { return true; } return (0, _isTransformToTargetDisabled.isTransformToTargetDisabled)({ selection: currentSelection, targetNodeTypeName: optionNodeTypeName, targetNodeTypeAttrs: optionNodeTypeAttrs }); } }, commands: { transformNode: function transformNode(targetType, metadata) { return (0, _transformNode2.transformNode)(api)(targetType, metadata); } }, getSharedState: function getSharedState(editorState) { var _config$useStandardNo, _api$blockControls2, _pluginState$showFlag; var useStandardNodeWidth = (_config$useStandardNo = config === null || config === void 0 ? void 0 : config.useStandardNodeWidth) !== null && _config$useStandardNo !== void 0 ? _config$useStandardNo : false; if (!editorState) { return { currentSelectedNodeName: undefined, showFlag: false, useStandardNodeWidth: useStandardNodeWidth }; } // Get the menuTriggerBy from blockControls plugin if available var currentSelectedNodeName = api === null || api === void 0 || (_api$blockControls2 = api.blockControls) === null || _api$blockControls2 === void 0 || (_api$blockControls2 = _api$blockControls2.sharedState.currentState()) === null || _api$blockControls2 === void 0 ? void 0 : _api$blockControls2.menuTriggerBy; // Get the showFlag from plugin state var pluginState = _main.blockMenuPluginKey.getState(editorState); var showFlag = (_pluginState$showFlag = pluginState === null || pluginState === void 0 ? void 0 : pluginState.showFlag) !== null && _pluginState$showFlag !== void 0 ? _pluginState$showFlag : false; return { currentSelectedNodeName: currentSelectedNodeName, showFlag: showFlag, useStandardNodeWidth: useStandardNodeWidth }; }, contentComponent: function contentComponent(_ref2) { var editorView = _ref2.editorView, popupsMountPoint = _ref2.popupsMountPoint, popupsBoundariesElement = _ref2.popupsBoundariesElement, popupsScrollableElement = _ref2.popupsScrollableElement; refs.popupsMountPoint = popupsMountPoint || undefined; return /*#__PURE__*/_react.default.createElement(_blockMenuProvider.BlockMenuProvider, { api: api, editorView: editorView }, /*#__PURE__*/_react.default.createElement(_blockMenu.default, { editorView: editorView, api: api, mountTo: popupsMountPoint, boundariesElement: popupsBoundariesElement, scrollableElement: popupsScrollableElement }), /*#__PURE__*/_react.default.createElement(_flag.Flag, { api: api })); } }; };