UNPKG

@atlaskit/editor-core

Version:

A package contains Atlassian editor core functionality

70 lines 2.62 kB
import { atTheEndOfBlock, atTheBeginningOfBlock, endPositionOfParent, startPositionOfParent } from '../../utils'; export var posOfMediaGroupNearby = function (state) { return posOfParentMediaGroup(state) || posOfFollowingMediaGroup(state) || posOfPreceedingMediaGroup(state); }; export var isSelectionNonMediaBlockNode = function (state) { var node = state.selection.node; return node && node.type !== state.schema.nodes.media && node.isBlock; }; export var posOfPreceedingMediaGroup = function (state) { if (!atTheBeginningOfBlock(state)) { return; } return posOfMediaGroupAbove(state, state.selection.$from); }; var posOfFollowingMediaGroup = function (state) { if (!atTheEndOfBlock(state)) { return; } return posOfMediaGroupBelow(state, state.selection.$to); }; var posOfMediaGroupAbove = function (state, $pos) { var adjacentPos; var adjacentNode; if (isSelectionNonMediaBlockNode(state)) { adjacentPos = $pos.pos; adjacentNode = $pos.nodeBefore; } else { adjacentPos = startPositionOfParent($pos) - 1; adjacentNode = state.doc.resolve(adjacentPos).nodeBefore; } if (adjacentNode && adjacentNode.type === state.schema.nodes.mediaGroup) { return adjacentPos - adjacentNode.nodeSize + 1; } }; /** * Determine whether the cursor is inside empty paragraph * or the selection is the entire paragraph */ export var isInsidePotentialEmptyParagraph = function (state) { var $from = state.selection.$from; return $from.parent.type === state.schema.nodes.paragraph && atTheBeginningOfBlock(state) && atTheEndOfBlock(state); }; export var posOfMediaGroupBelow = function (state, $pos, prepend) { if (prepend === void 0) { prepend = true; } var adjacentPos; var adjacentNode; if (isSelectionNonMediaBlockNode(state)) { adjacentPos = $pos.pos; adjacentNode = $pos.nodeAfter; } else { adjacentPos = endPositionOfParent($pos); adjacentNode = state.doc.nodeAt(adjacentPos); } if (adjacentNode && adjacentNode.type === state.schema.nodes.mediaGroup) { return prepend ? adjacentPos + 1 : adjacentPos + adjacentNode.nodeSize - 1; } }; export var posOfParentMediaGroup = function (state, $pos, prepend) { if (prepend === void 0) { prepend = true; } var $from = state.selection.$from; $pos = $pos || $from; if ($pos.parent.type === state.schema.nodes.mediaGroup) { return prepend ? startPositionOfParent($pos) : endPositionOfParent($pos) - 1; } }; //# sourceMappingURL=utils.js.map