@atlaskit/editor-plugin-list
Version:
List plugin for @atlaskit/editor-core
51 lines (50 loc) • 1.58 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.findFirstParentListNode = findFirstParentListNode;
exports.findRootParentListNode = void 0;
var _utils = require("@atlaskit/editor-common/utils");
var _utils2 = require("@atlaskit/editor-prosemirror/utils");
function findFirstParentListNode($pos) {
var currentNode = $pos.doc.nodeAt($pos.pos);
var listNodePosition = null;
if ((0, _utils.isListNode)(currentNode)) {
listNodePosition = $pos.pos;
} else {
var result = (0, _utils2.findParentNodeClosestToPos)($pos, _utils.isListNode);
listNodePosition = result && result.pos;
}
if (listNodePosition == null) {
return null;
}
var node = $pos.doc.nodeAt(listNodePosition);
if (!node) {
return null;
}
return {
node: node,
pos: listNodePosition
};
}
var _findRootParentListNode = exports.findRootParentListNode = function findRootParentListNode($pos) {
var doc = $pos.doc;
if ($pos.pos + 1 > doc.content.size) {
return null;
}
if ($pos.depth === 0) {
return doc.resolve($pos.pos + 1);
}
var currentNode = doc.nodeAt($pos.pos);
var beforePosition = $pos.before();
var nodeBefore = doc.nodeAt(beforePosition);
if ((0, _utils.isListNode)(currentNode) && !(0, _utils.isListItemNode)(nodeBefore)) {
return doc.resolve($pos.pos + 1);
}
var parentList = (0, _utils2.findParentNodeClosestToPos)($pos, _utils.isListNode);
if (!parentList) {
return null;
}
var listNodePosition = doc.resolve(parentList.pos);
return _findRootParentListNode(listNodePosition);
};