@atlaskit/editor-plugin-synced-block
Version:
SyncedBlock plugin for @atlaskit/editor-core
26 lines (25 loc) • 997 B
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.rebaseTransaction = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _transform = require("@atlaskit/editor-prosemirror/transform");
var rebaseTransaction = exports.rebaseTransaction = function rebaseTransaction(currentTr, incomingTr, state) {
if (!incomingTr.docChanged) {
return currentTr;
}
var currentMapping = new _transform.Mapping((0, _toConsumableArray2.default)(currentTr.mapping.maps).reverse().map(function (map) {
return map.invert();
}));
var rebasedTransaction = state.tr;
currentTr.steps.forEach(function (step) {
var mappedStep = step.map(currentMapping);
if (mappedStep) {
rebasedTransaction.step(mappedStep);
currentMapping.appendMap(mappedStep.getMap());
}
});
return rebasedTransaction;
};