UNPKG

@atlaskit/editor-plugin-list

Version:

List plugin for @atlaskit/editor-core

67 lines (66 loc) 2.14 kB
"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); };