@atlaskit/editor-plugin-metrics
Version:
Metrics plugin for @atlaskit/editor-core
37 lines (36 loc) • 1.57 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isSafeInsert = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _transform = require("@atlaskit/editor-prosemirror/transform");
var isSafeInsert = exports.isSafeInsert = function isSafeInsert(tr, insertPos, trType) {
var _$firstStepPos$node, _$insertPos$node;
// Exclude the cases where trType is defined, as it is a specific action
// that should not be considered for safe insert actions
if (trType) {
return false;
}
if (insertPos > tr.doc.content.size) {
return false;
}
var _tr$steps = (0, _slicedToArray2.default)(tr.steps, 1),
firstStep = _tr$steps[0];
if (!(firstStep instanceof _transform.ReplaceStep)) {
return false;
}
var firstStepPos = firstStep.from;
if (firstStepPos === insertPos) {
return false;
}
var $firstStepPos = tr.doc.resolve(firstStepPos);
if ($firstStepPos.node().type.name === 'paragraph') {
return false;
}
var firstStepParentNodeType = (_$firstStepPos$node = $firstStepPos.node($firstStepPos.depth)) === null || _$firstStepPos$node === void 0 ? void 0 : _$firstStepPos$node.type.name;
var $insertPos = tr.doc.resolve(insertPos);
var parentNodeType = (_$insertPos$node = $insertPos.node($insertPos.depth - 1)) === null || _$insertPos$node === void 0 ? void 0 : _$insertPos$node.type.name;
return parentNodeType !== firstStepParentNodeType;
};