UNPKG

@atlaskit/editor-plugin-limited-mode

Version:

LimitedMode plugin for @atlaskit/editor-core

54 lines (53 loc) • 2.27 kB
import { getNodeIdProvider } from '@atlaskit/editor-common/node-anchor'; import { usePluginStateEffect } from '@atlaskit/editor-common/use-plugin-state-effect'; import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled'; import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals'; import { createPlugin } from './pm-plugins/main'; import { limitedModePluginKey } from './pm-plugins/plugin-key'; export const limitedModePlugin = ({ api }) => { return { name: 'limitedMode', pmPlugins() { return [{ name: 'limitedModePlugin', plugin: () => createPlugin(api) }]; }, getSharedState(editorState) { if (editorState) { return { get enabled() { var _limitedModePluginKey, _limitedModePluginKey2; return (_limitedModePluginKey = (_limitedModePluginKey2 = limitedModePluginKey.getState(editorState)) === null || _limitedModePluginKey2 === void 0 ? void 0 : _limitedModePluginKey2.enabled) !== null && _limitedModePluginKey !== void 0 ? _limitedModePluginKey : false; }, limitedModePluginKey }; } return { enabled: false, limitedModePluginKey }; }, usePluginHook: ({ editorView }) => { usePluginStateEffect(api, ['limitedMode'], ({ limitedModeState }) => { if (expValEquals('platform_editor_native_anchor_with_dnd', 'isEnabled', true) || isExperimentEnabled('platform_editor_block_control_migration')) { var _limitedModeState$ena; const isEnabled = (_limitedModeState$ena = limitedModeState === null || limitedModeState === void 0 ? void 0 : limitedModeState.enabled) !== null && _limitedModeState$ena !== void 0 ? _limitedModeState$ena : false; const nodeIdProvider = 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(); } } }); } }; };