@atlaskit/editor-plugin-selection
Version:
Selection plugin for @atlaskit/editor-core
52 lines (51 loc) • 2.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createMarkBoundaryCursorPlugin = void 0;
var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
var _view = require("@atlaskit/editor-prosemirror/view");
var _markBoundaryCursorPluginKey = require("./mark-boundary-cursor-plugin-key");
var _markBoundaryCursorDecoration = require("./mark-boundary-cursor/ui/mark-boundary-cursor-decoration");
var _activeMarksSide = require("./mark-boundary-cursor/utils/active-marks-side");
var createMarkBoundaryCursorPlugin = exports.createMarkBoundaryCursorPlugin = function createMarkBoundaryCursorPlugin() {
return new _safePlugin.SafePlugin({
key: _markBoundaryCursorPluginKey.markBoundaryCursorPluginKey,
state: {
init: function init() {
return {
decorations: _view.DecorationSet.empty
};
},
apply: function apply(tr, currentState) {
var selection = tr.selection,
storedMarks = tr.storedMarks,
doc = tr.doc,
selectionSet = tr.selectionSet,
storedMarksSet = tr.storedMarksSet,
docChanged = tr.docChanged;
if (!selectionSet && !storedMarksSet && !docChanged) {
return currentState;
}
var side = (0, _activeMarksSide.getActiveMarksSide)({
selection: selection,
storedMarks: storedMarks
});
if (!side) {
return {
decorations: _view.DecorationSet.empty
};
}
return {
decorations: _view.DecorationSet.create(doc, [(0, _markBoundaryCursorDecoration.createMarkBoundaryCursorDecoration)(selection.head, side)])
};
}
},
props: {
decorations: function decorations(state) {
var _markBoundaryCursorPl;
return (_markBoundaryCursorPl = _markBoundaryCursorPluginKey.markBoundaryCursorPluginKey.getState(state)) === null || _markBoundaryCursorPl === void 0 ? void 0 : _markBoundaryCursorPl.decorations;
}
}
});
};