@atlaskit/editor-plugin-limited-mode
Version:
LimitedMode plugin for @atlaskit/editor-core
55 lines (53 loc) • 2.46 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 _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
var _main = require("./pm-plugins/main");
var limitedModePlugin = exports.limitedModePlugin = function limitedModePlugin(_ref) {
var api = _ref.api;
return {
name: 'limitedMode',
pmPlugins: function pmPlugins() {
return [{
name: 'limitedModePlugin',
plugin: _main.createPlugin
}];
},
getSharedState: function getSharedState(editorState) {
if (editorState) {
return {
get enabled() {
var _limitedModePluginKey, _limitedModePluginKey2;
return (_limitedModePluginKey = (_limitedModePluginKey2 = _main.limitedModePluginKey.getState(editorState)) === null || _limitedModePluginKey2 === void 0 ? void 0 : _limitedModePluginKey2.documentSizeBreachesThreshold) !== null && _limitedModePluginKey !== void 0 ? _limitedModePluginKey : false;
},
limitedModePluginKey: _main.limitedModePluginKey
};
}
return {
enabled: false,
limitedModePluginKey: _main.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)) {
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();
}
}
});
}
};
};