@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
70 lines • 2.62 kB
JavaScript
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