UNPKG

@atlaskit/editor-plugin-limited-mode

Version:

LimitedMode plugin for @atlaskit/editor-core

59 lines (57 loc) • 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.limitedModePlugin = void 0; var _nodeAnchor = require("@atlaskit/editor-common/node-anchor"); var _usePluginStateEffect = require("@atlaskit/editor-common/use-plugin-state-effect"); var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled"); var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals"); var _main = require("./pm-plugins/main"); var _pluginKey = require("./pm-plugins/plugin-key"); var limitedModePlugin = exports.limitedModePlugin = function limitedModePlugin(_ref) { var api = _ref.api; return { name: 'limitedMode', pmPlugins: function pmPlugins() { return [{ name: 'limitedModePlugin', plugin: function plugin() { return (0, _main.createPlugin)(api); } }]; }, getSharedState: function getSharedState(editorState) { if (editorState) { return { get enabled() { var _limitedModePluginKey, _limitedModePluginKey2; return (_limitedModePluginKey = (_limitedModePluginKey2 = _pluginKey.limitedModePluginKey.getState(editorState)) === null || _limitedModePluginKey2 === void 0 ? void 0 : _limitedModePluginKey2.enabled) !== null && _limitedModePluginKey !== void 0 ? _limitedModePluginKey : false; }, limitedModePluginKey: _pluginKey.limitedModePluginKey }; } return { enabled: false, limitedModePluginKey: _pluginKey.limitedModePluginKey }; }, usePluginHook: function usePluginHook(_ref2) { var editorView = _ref2.editorView; (0, _usePluginStateEffect.usePluginStateEffect)(api, ['limitedMode'], function (_ref3) { var limitedModeState = _ref3.limitedModeState; if ((0, _expValEquals.expValEquals)('platform_editor_native_anchor_with_dnd', 'isEnabled', true) || (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_block_control_migration')) { var _limitedModeState$ena; var isEnabled = (_limitedModeState$ena = limitedModeState === null || limitedModeState === void 0 ? void 0 : limitedModeState.enabled) !== null && _limitedModeState$ena !== void 0 ? _limitedModeState$ena : false; var nodeIdProvider = (0, _nodeAnchor.getNodeIdProvider)(editorView); // When limited mode is enabled first time, // We need to remove all existing data-node-anchor attributes // And nodeIdProvider to limited mode to prevent adding data-node-anchor on new nodes if (isEnabled && nodeIdProvider && !nodeIdProvider.isLimitedMode()) { nodeIdProvider.setLimitedMode(); } } }); } }; };