UNPKG

@atlaskit/editor-common

Version:

A package that contains common classes and components for editor and renderer

73 lines (72 loc) 3.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.reconcileBlockMarkInRange = exports.reconcileBlockMarkForParagraphAtPos = exports.reconcileBlockMarkForContainerAtPos = exports.getFirstParagraphBlockMarkAttrs = exports.getBlockMarkAttrs = void 0; var _commands = require("../commands"); var getDefaultBlockNodeTypes = function getDefaultBlockNodeTypes(tr) { var paragraph = tr.doc.type.schema.nodes.paragraph; return paragraph ? [paragraph] : []; }; var getBlockMarkAttrs = exports.getBlockMarkAttrs = function getBlockMarkAttrs(node, markType) { if (!node || !markType) { return false; } var blockMark = node.marks.find(function (mark) { return mark.type === markType; }); return blockMark ? blockMark.attrs : false; }; var getFirstParagraphBlockMarkAttrs = exports.getFirstParagraphBlockMarkAttrs = function getFirstParagraphBlockMarkAttrs(node, markType) { if (!node || !markType) { return false; } var paragraph = node.type.schema.nodes.paragraph; if (!paragraph) { return false; } var _findFirstParagraphBlockMarkAttrs = function findFirstParagraphBlockMarkAttrs(currentNode) { if (currentNode.type === paragraph) { return getBlockMarkAttrs(currentNode, markType); } for (var index = 0; index < currentNode.childCount; index++) { var childResult = _findFirstParagraphBlockMarkAttrs(currentNode.child(index)); if (childResult !== false) { return childResult; } } return false; }; return _findFirstParagraphBlockMarkAttrs(node); }; var reconcileBlockMarkInRange = exports.reconcileBlockMarkInRange = function reconcileBlockMarkInRange(tr, from, to, markType, markAttrs) { var blockNodeTypes = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : getDefaultBlockNodeTypes(tr); if (!markType || blockNodeTypes.length === 0) { return false; } return (0, _commands.createToggleBlockMarkOnRangeNext)(markType, function () { return markAttrs; }, blockNodeTypes)(from, to, tr); }; var reconcileBlockMarkForContainerAtPos = exports.reconcileBlockMarkForContainerAtPos = function reconcileBlockMarkForContainerAtPos(tr, containerPos, markType, markAttrs) { var blockNodeTypes = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : getDefaultBlockNodeTypes(tr); var containerNode = tr.doc.nodeAt(containerPos); if (!containerNode) { return false; } return reconcileBlockMarkInRange(tr, containerPos, containerPos + containerNode.nodeSize, markType, markAttrs, blockNodeTypes); }; var reconcileBlockMarkForParagraphAtPos = exports.reconcileBlockMarkForParagraphAtPos = function reconcileBlockMarkForParagraphAtPos(tr, pos, markType, markAttrs) { var paragraph = tr.doc.type.schema.nodes.paragraph; if (!paragraph) { return false; } var resolvedPos = tr.doc.resolve(Math.max(0, Math.min(pos, tr.doc.content.size))); for (var depth = resolvedPos.depth; depth > 0; depth--) { var node = resolvedPos.node(depth); if (node.type === paragraph) { return reconcileBlockMarkInRange(tr, resolvedPos.before(depth), resolvedPos.before(depth) + node.nodeSize, markType, markAttrs, [paragraph]); } } return false; };