@atlaskit/editor-plugin-list
Version:
List plugin for @atlaskit/editor-core
67 lines (66 loc) • 2.14 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.findFirstParentListItemNode = findFirstParentListItemNode;
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
};
}
function findFirstParentListItemNode($pos) {
var currentNode = $pos.doc.nodeAt($pos.pos);
var listItemNodePosition = (0, _utils.isListItemNode)(currentNode) ? $pos : (0, _utils2.findParentNodeClosestToPos)($pos, _utils.isListItemNode);
if (!listItemNodePosition || listItemNodePosition.pos === null) {
return null;
}
var node = $pos.doc.nodeAt(listItemNodePosition.pos);
if (!node) {
return null;
}
return {
node: node,
pos: listItemNodePosition.pos
};
}
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);
};