@atlaskit/editor-plugin-limited-mode
Version:
LimitedMode plugin for @atlaskit/editor-core
59 lines (57 loc) • 2.75 kB
JavaScript
;
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();
}
}
});
}
};
};