@atlaskit/editor-plugin-breakout
Version:
Breakout plugin for @atlaskit/editor-core
49 lines (48 loc) • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setBreakoutMode = setBreakoutMode;
var _codeBlock = require("@atlaskit/editor-common/code-block");
var _state = require("@atlaskit/editor-prosemirror/state");
var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
var _findBreakoutNode = require("../pm-plugins/utils/find-breakout-node");
var _singlePlayerExpand = require("../pm-plugins/utils/single-player-expand");
function setBreakoutMode(mode, isLivePage) {
return function (state, dispatch) {
var node = (0, _findBreakoutNode.findSupportedNodeForBreakout)(state.selection);
if (!node) {
return false;
}
var tr;
if ((0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_lovability_resize_extensions')) {
var marks = state.schema.marks.breakout.create({
mode: mode
}).addToSet(node.node.marks);
tr = state.tr.setNodeMarkup(node.pos, node.node.type, node.node.attrs, marks);
} else {
tr = state.tr.setNodeMarkup(node.pos, node.node.type, node.node.attrs, [state.schema.marks.breakout.create({
mode: mode
})]);
}
if (node.node.type === state.schema.nodes.expand) {
(0, _singlePlayerExpand.updateExpandedState)(tr, node, isLivePage);
} else if (node.node.type === state.schema.nodes.codeBlock) {
var newNode = tr.doc.nodeAt(node.pos);
var oldNode = node.node;
if (newNode) {
(0, _codeBlock.transferCodeBlockWrappedValue)(oldNode, newNode);
}
}
tr.setMeta('scrollIntoView', false);
if (state.selection instanceof _state.NodeSelection) {
if (state.selection.$anchor.pos === node.pos) {
tr.setSelection(_state.NodeSelection.create(tr.doc, node.pos));
}
}
if (dispatch) {
dispatch(tr);
}
return true;
};
}