@atlaskit/editor-plugin-limited-mode
Version:
LimitedMode plugin for @atlaskit/editor-core
49 lines (48 loc) • 2.27 kB
JavaScript
import { getNodeIdProvider } from '@atlaskit/editor-common/node-anchor';
import { usePluginStateEffect } from '@atlaskit/editor-common/use-plugin-state-effect';
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
import { createPlugin, limitedModePluginKey } from './pm-plugins/main';
export var limitedModePlugin = function limitedModePlugin(_ref) {
var api = _ref.api;
return {
name: 'limitedMode',
pmPlugins: function pmPlugins() {
return [{
name: 'limitedModePlugin',
plugin: createPlugin
}];
},
getSharedState: function getSharedState(editorState) {
if (editorState) {
return {
get enabled() {
var _limitedModePluginKey, _limitedModePluginKey2;
return (_limitedModePluginKey = (_limitedModePluginKey2 = limitedModePluginKey.getState(editorState)) === null || _limitedModePluginKey2 === void 0 ? void 0 : _limitedModePluginKey2.documentSizeBreachesThreshold) !== null && _limitedModePluginKey !== void 0 ? _limitedModePluginKey : false;
},
limitedModePluginKey: limitedModePluginKey
};
}
return {
enabled: false,
limitedModePluginKey: limitedModePluginKey
};
},
usePluginHook: function usePluginHook(_ref2) {
var editorView = _ref2.editorView;
usePluginStateEffect(api, ['limitedMode'], function (_ref3) {
var limitedModeState = _ref3.limitedModeState;
if (expValEquals('platform_editor_native_anchor_with_dnd', 'isEnabled', true)) {
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 = 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();
}
}
});
}
};
};